Go(Golang)開発 マイクロサービスを実現する
Golang(Go言語)バックエンド開発。

Golang(Go言語)とは

高速に並列処理のバックエンドを実現する
プログラミング言語


Go(Golang)は、 2009年にGoogleがリリースしたオープンソースのプログラミング言語であり、主に大規模でアクセスが多いWebサービス/メディア配信サービス/FinTechサービスにおいてWebサーバーやマイクロサービスのサーバーサイドに使用されます。 開発者はスケーラブルで安全なWebアプリケーションを迅速に開発でき、企業はさまざまなプラットフォームへ迅速にサービスを展開する事ができます。
Golangは、クラウドコンピューティングを念頭に置いて作成され、シンプルなコードによる可読性、並列処理の高速パフォーマンス、学習難度の低さ、DevOpsアプローチと言った理由から様々な企業に選ばれており、 Google(Earth/AppEngine/YouTube/Firebase/Kubernetes)、Microsoft、Uber、Netflix、Salesforce、SendGrid、Dropbox、PayPal、American Expressなどに採用されています。
githubレポートによるとGolangが2019年に最も急速に成長している言語であり、Go開発者の81%が、Goを使用すると生産的になると感じたとアンケートに答えました。

Go-Logo_Blue650_412.png

Golangのユースケース

クラウドネイティブアプリにおける
マイクロサービスとAPIの高速な同時実行

Goは、スケーリングされたアプリケーション、マイクロサービス、およびクラウド開発で求められるAPIの高速かつ正確な同時実行へ対応するために作成されました。実際、Cloud Native Computing Foundationのプロジェクトの75%以上はGoで書かれています。
Goで構築されたサーバーは、起動時間が瞬時になり、従量課金制のサーバーレス展開で実行する方が安価になります。
Goは、開発者が最新のクラウドで直面する多くの課題に対処し、標準の慣用的なAPIを提供するとともに、マルチコアプロセッサを活用するための同時実行性を組み込んでいます。
Go Developer Survey2020によると、Goで最も一般的な使用法としてAPIサービス構築が挙げられています。
また、英国政府でのガバメントコンテンツAPI用途でも利用されています。

Fast_API_image_640_357.jpg

高アクセスと多接続を必要とする
メッセージングサービスの高速化

TwitterでのGolangは1日に50億セッションをリアルタイムで処理する事に貢献しています。数億のデバイスから毎秒数百万のイベントをAmazonELBを通してGolangエンドポイントに送信し、1秒当たり数百万の規模で分析イベントを受信して処理しています。
5億ユーザーが利用するチャットプラットフォームであるStreamでのユースケースでは、GoはPythonの40倍高速であると示されています。

1日あたり5億メッセージを超えるグローバルなメール配信サービスであるSendGridは、並行処理を目的にして、カスタマイズ可能で信頼性が高いスケーラブルなAPIにGolangを使用しています。
グローバル規模のストレージサービスであるDropboxは、バックエンドパフォーマンス改善の為にPythonからGolangに切り替えています。

Messaging_Service_image_640_335.jpg

モビリティサービス(MaaS)の
地図処理やマイクロサービス

Goの持つ高速性は、MaaSプロジェクトでの地図処理やデジタルツインのような描画、複数のアプリに繋げるマイクロサービスバックエンドにも使われています。
Uberでは、ジオベース(地理データベース)の構成にジオフェンス(仮想的な境界線で囲まれたエリア)を幅広く使用しており、地図処理の高スループットと低遅延の要件を満たし、保守性と信頼性からGoを選択しました。
結果、40台のマシンを35%のCPU使用率で実行して17万QPSのピーク負荷を処理しました。応答時間は95パーセンタイルで5ミリ秒未満、50パーセンタイルで50ミリ秒未満でした。 また、開始以来99.99%の稼働率を誇っています。

SIXTは、世界最大のテクノロジー主導のモビリティ企業の1つです。 Goで構築されたモビリティプラットフォームにより、お客様は、旅行の計画、テレマティクスによる車の開閉、使用状況データの確認などを行うことができます。またSIXTは、最先端のクラウドネイティブとなるマイクロサービスベースのイベント駆動型Golangインフラストラクチャ上に構築され、レンタル/ライド/シェアなど、ほとんどのモビリティ製品提供の基盤となっています。

MaaS_image640.jpg

FinTechにおける
Banking/Payment as a Service

Banking-as-a-Serviceや支払処理システムでのマルチAPI、24/365のオペレーションとハードなSLAにおいて、支払い処理パイプラインの各ステップでGolangが提供する最小のレイテンシーや安定性は効果を発揮します。

American Expressは、主にクレジットカードと支払い処理で知られています。2019年12月31日現在、同社は1億1440万枚のカードを保有しており、マイクロサービス、トランザクションルーティング、および負荷分散においてアーキテクチャを検討したところ、Goは1秒あたり14万リクエストを誇るパフォーマンスを達成し、選定に至りました。またGoで記述されているDocker、Kubernetes、Prometheusと併せて運用しています。
PayPalでは支払い処理プラットフォームにC++で開発した独自のNoSQLデータベースを利用していましたが、コードの複雑さにより、開発効率が落ちていました。
Goを採用することにより、大規模なソフトウェアの作成と実行の複雑さを容易に単純化し、サービス市場投入までの時間を短縮する事に成功しています。

fintech_image640_348.jpg

eコマースにおけるスケーラビリティ対応と
高レスポンスなユーザーエクスペリエンス

eコマースの企業では、ページの読み込み時間、スケーラビリティの問題、ウェブサイトの可用性、つまり主要なプロモーションの場面で課題に直面しています。Golangは、これらの問題を解決するために広く使用されています。

ポーランド最大のオンラインショッピングプラットフォーム「Allegro」では2100万人以上の登録顧客と月間2億2000万回以上のセッション数を誇りますが、Goでキャッシュサービスを構築した結果、最長のリクエストに対して、アプリケーションを2.5秒以上から250ミリ秒未満に高速化しました。
ラテンアメリカで最大のオンラインコマースエコシステム「MercadoLibre」では、Goを使用する事でサーバーの数を32から4に削減し、ビルド時間を3倍高速にすることで、1分あたり2,000万を超えるリクエストを処理するミッションクリティカルなAPIを構築する事を可能としています。

e_commerce_image640.jpg

映像ストリーミングサービス

GolangのHLSなどのプロトコルを使用すると、インストールが簡単で、最も効率的なパフォーマンスを提供するストリーミングサービスを簡単に構築できます。Go言語でストリーミングすることの大きな利点は、特にライブストリーミングに関しては速度です。ビデオとオーディオのエンコード、デコード、パッケージ化の際のシームレスな移行がなければ、ライブストリーミングは不可能です。Goはこれらすべてのプロセスをスムーズに処理し、中断を最小限に抑えて高品質のエクスペリエンスを視聴者に提供できます。
SaaSモデルで映画業界向けのマーケティングデータ分析、およびキャンペーン管理ソフトウェアを提供する「Movio」では、ScalaからGoへ移行し、5秒以内にビルド、1秒または2秒でテスト、新しいコンテナを10秒以内にデプロイできるような高速マイクロサービスを実現しています。

streaming_service_image640.jpg

Massive IoTプラットフォーム


IoTの継続的な台頭とエッジデバイスの急増、5Gネットワークの普及に伴い、迅速に対応を必要とする膨大な量のデータが発生しています。その中でGolangは、組み込まれている同時実行性によって多くのIoTアプリケーションで優れた候補となっています。
コネクテッドオペレーションクラウドプラットフォームを提供する「Samsara」は、AI安全プログラム、リアルタイムの可視性、ワークフロー、レポート、および統合のエコシステムをもたらし、製造業からロジスティクス、建設、政府など、経済を支えるオペレーションを接続していますが、この産業用IoTプラットフォームはGoで構築されています。
オープンソースのIoTフレームワーク「Flogo」でも、KubernetesベースのIoTエッジアプリケーションにおいてGoを採用しています。

massive_iot_image640.jpg

当社のできること

Massive IoT Edge
アプリケーションプラットフォーム

Massive IoTとは大規模なIoT、即ち数百万台を超えるIoTデバイス接続の事です。5Gを活用すると数十億のIoTデバイスとシームレスかつ安全に接続できるようになることから注目されています。
当社が提供するIoTエッジアプリケーションプラットフォームは、スマートシティやスマートロジスティクス、ファクトリーオートメーション、デジタルスレッドシナリオにおいて、 IoTエッジAI(TinyML)、データ蓄積・連携・可視化、一元管理、マルチプラットフォーム展開、サイバーセキュリティと言った大きく5つのテクノロジーから構成され、センシングデータ、レーダーからの反射データ、カメラデータをエッジAIにより解析し空間プロットデータをデジタル上で表現するデジタルツインを提供します。
IoTデータのプロセスモデリングやデータとデバイスの一元管理、エッジAI学習モデルはすぐにリモート修正・更新を行う事ができる他、エリアやデバイス毎に任意のIoTアプリケーションをノーコードで起動させる事ができ、外部のSaaS、アプリ、Webとのデータ連携を実現することで、マイクロサービス型に展開を行う事もできます。

5gnetwork_image640_426.jpg

製・販・配を繋ぐ
マルチAIプラットフォーム

当社ではマルチAIプラットフォーム「SyncLect」を提供しており、製造業に対してデジタルスレッド対応、販売に対してスマートストア対応、物流に対してマルチモーダルデジタイゼーションをSyncLectで実装しています。
SyncLectは前提としてマイクロサービス型のアーキテクチャを採用している為、AIコンポーネント、IoTコンポーネント、エッジアプリケーション、データプラットフォーム化など部品化して資産化しており、外部のSaaSや社内システムとの連携、エンタープライズ向け対応など要求に併せて組立て実装を行っています。 部品化したコンポーネントは業界横断で利用する事ができ、ID/Pass発行でOEM販売する事も可能です。

物流DXを詳しく

pixta_73723696_S.jpg

顔認証決済プラットフォーム構築


顔認証決済プラットフォームは、スマートフォン、カード、現金を使わずに手ぶらで 生体認証取引を完了する事ができます。 顔の撮影とカード情報は暗号化されたデータに変換され、スマートデバイスやIPカメラで認証した後ペイメントゲートウェイを通じてキャッシュレス決済を実現します。お買い物完了時には、買い物履歴をお客様のスマートフォンに通知を行います。
セキュリティ向上の為に、多要素認証とディープラーニングを用いた攻撃検知エンジンを採用し、コンテナ化技術とクラウドを活用したマイクロサービス構成により、効率的な水平展開を可能としています。

顔認証決済プラットフォームを詳しく

serverless_image500_S.jpg

Banking as a Service
プラットフォーム構築

Banking-as-a-Serviceは金融機関の次世代モデルとして金融データを各所で利用できるプラットフォームです。
当社では、Banking-as-a-Serviceプラットフォーム基盤開発を行っており、QR決済、個人間送金、デジタル商品券、後払いなどのAPI構築やPCIDSS準拠したセキュリティ対策、プライベートネットワーク化、データ暗号化、ディザスタリカバリをクラウドベースで構築しています。
これにより各サービス事業者は、プラットフォームから提供される機能を利用して、スマホ完結の自動車融資やスマホ上で完結する住宅ローン申し込みなどオリジナルの金融サービスアプリケーションを開発する事ができます。

e-banking_image640_S.jpg

動画配信サービスバックエンド

当社では、動画メディアやe-ラーニングの動画コンテンツ配信サービスバックエンドコンポーネント開発を行っています。
通常、動画配信サービス構築を行おうとすると高コストがつきものでした。当社では、動画配信プラットフォームサービスを提供しており、一部の機能をコンポーネント化して他社提供も行っております。
広範なブラウザーやデバイスで再生できるように、さまざまな形式のビデオを提供し、モバイル デバイス、TV、PC などにオンデマンドとライブストリーミングの両方を提供する事ができます。
録画されたビデオからテキストを抽出して字幕とキャプションを追加することや、検索インデックスの作成、分析用ダッシュボードも簡単に利用が可能です。

media_ondemand_image640S.jpg