2020-01-09

スマートマットとマイクロサービス

hogemone / hamamoto

エンジニアリング事業本部の @hogemone / hamamoto です。

前職ではメルカリで、エンジニアリングマネージャーとして、メルカリのマイクロサービス化を推進していましたが、現在はスマートショッピングにてエンジニアリングマネージャーとして、既存システムをマイクロサービスアーキテクチャでバージョンアップを推進しています。

本記事ではスマートショッピングにおける、SaaS事業プロダクトであるスマートマットのマイクロサービス開発について語ります。

マイクロサービス開発の現状

現在私達はスマートマットプロダクトのバックエンドシステムのバージョンアップをマイクロサービスアーキテクチャで開発しています。

なお今回のバージョンアップアップは、事業拡大・組織拡大に耐えうるべく、データ設計やエンドポイント設計をし直しています。ただし、一部スマートマット機器から呼び出される計測用のエンドポイントなどは既存システムを継承しています。

既存システムから踏襲した技術スタック

  • AWS(RDS, SNS, SQS, S3)
  • Go
  • マイクロサービスアーキテクチャ
  • クリーンアーキテクチャ

新規システムで新たに採用した技術スタック

  • AWS(EKS, ECR) & Kubernetes
  • Ambassador(API Gateway built on the Envoy Proxy)
  • BFF(Backends for Frontends)
  • Open API
  • Github Actions
  • Argo CD
  • Telepresence
  • DataDog (検討中...)

既存システムがマイクロサービスアーキテクチャで開発されていたこともあり、データ設計以外でいうとKubernetes(以下k8s)とその周辺スタックの利用を選択した点も大きな変更点となります。

k8s導入にあたり、社内では 入門Kubernetes の輪読会を実施するなどして、k8sでの運用を前提として技術力向上も取り組んでいます。

その他それぞれの詳しい紹介については今後、弊社エンジニアが記事を書いてくれるはずです。

開発組織の現状

弊社はまだそこまで大きくない開発組織で開発しています。またマイクロサービス開発のための基盤を専任で開発するチームは存在しないため、バックエンドエンジニアとSREが協力しながら、環境を整えています。

またそれぞれのマイクロサービスは基本同じ技術スタックを利用し、オンボーディングコストが低い状態を維持できるよう配慮しています。

今後開発が進むとともに、組織がスケールする際に備え、マイクロサービス毎にコードオーナーを設定し、そのコードオーナーが開発運用やドキュメントを整備していくことにより、マイクロサービス毎のオーナーシップを設定・継承してく方針です。

開発組織的にもいろいろ考慮&配慮しながら進めていかなければならないのが、マイクロサービス開発の難しい側面でもありますし、楽しめる側面でもあります。

PR1

まだまだ考えることが多いマイクロサービス開発を実施しているスマートショッピングでは、スマートマットを支えるエンジニア各職を募集しています!

PR2

スマートショッピングではスマートマットを通して在庫管理・自動発注を支援しています!

201912224 s5

最新の記事