BLOGアソビュー株式会社のテックブログ2018-03-01アソビューを支える技術こんにちは。🐶か😼かと聞かれると、間違いなく🐶派エンジニアの兼平です。今回はアソビューがどんな技術で支えられているかを紹介したいと思います。技術を紹介する前に現在運用してるサービスを紹介しておいたほうがいいと思います。asoview!が提供する体験を贈ることのできるギフトサービスまた、コンシューマー向けサービス以外にもマーケティング・プロモーション支援事業、ERP事業なども展開しておりそのためのシステムもあります。観光商品販売管理システム他にも、外部サービスと連携するためのAPIや、社内管理システムなど多数のシステムを運用しています。このように、現在多数のシステムが開発、運用されているのが現在のアソビューを取り巻く状況です。これらを支えるため、現在は以下に紹介するような技術を使用してサービスを展開しています。アソビューのインフラを支える技術アソビューでは今後グロースしていくサービスにも迅速に対応できるよう、全面的にAWSを使用したインフラを採用しています。(ECS)を利用したサービスが増えています。ECSはAWSのフルマネージドコンテナ管理サービスであり、コンテナベースの実行環境を運用をサポートする多数の機能を含んでいます。EKSも検討しています。KubernetesはOSSの為サービスプロバイダーに依存せず、標準的コードベースの管理システム、取り巻くエコシステムとその成長速度など、今後サービスグロースさせていく上で求められる要素が多く存在します。Beanstalk、EC2も利用しています。データベースとしてはMySQLをメインとして利用しています。Auroraが多く使われています。DynamoDBも使用しています。CloudSearchを採用しています。Gatewayを利用したAPI管理や、軽量な処理などはLambda、ユーザ管理のCognito、メッセージングにSQS、ログストリームのKinesis他、AWSのサービスで解決できる課題は積極的に採用しインフラを支えています。AWSのリースの管理にはTerraformを利用しています。アソビューのサーバサイドを支える技術アソビューのサーバサイドは広くJavaを採用しており、一部のサービスでは実験的にGoも使用しています。9以降のリリースサイクルの変更も気になるところです。Bootを利用しています。Bootは素早くプロダクションレディなアプリケーションを構築するために非常に強力な機能を多く含んでいます。Cloudによるサポートも積極的にに採用しています。Cloudが提供する機能は非常に有効である一方で、ECSやKubernetesによって提供される機能と重複する部分も多いので、今後は各々を適切に選択してくのが鍵となります。亨(@masuda220)氏を迎え、組織的にDDDを行っています。JavaやSpringはDDDとの相性もよく、アソビューのサーバサイドでは重要な技術の一つです。DDDはエンジニアが積極的にビジネスに向き合い、成長後もシステムの変更を容易にする為に欠かせない技術の一つとです。現時点で使っているのは下記技術です。JS(styled-componentかな?)なども取り入れて行く予定です。設計や基盤については整えつつも流行り廃りの早いフロントエンドなので特定のフレームワークに固執することなく、柔軟に新しいフレームワークや技術を取り入れていく方針です。その他開発を支える技術その他アソビューの開発で使われてる技術要素も紹介します。スクラムサービスが成長していく中で、ユーザに届ける価値をチームとして考える必要があるため、現在ではスクラムによる開発を進めています。それらのサポートの為に、AtlassianのJIRAやConfluenceも利用しています。ユーザストーリーマッピング開発に関わったことのある方であれば、プロジェクトの後半に必要な機能の見落としや考慮漏れを経験した方も多いと思います。アソビューでは、このような課題の発見や、プロジェクトのステークホルダーの理解を深めるためにユーザストーリーマッピングを行っています。Github改めて説明の必要性はないと思いますが、支えている技術の一つとなります。CircleCI一部、JenkinsによるCI環境も残っていますが、最近開発、運用されているシステムは全面的にCircleCIを利用しています。CIはリソースを消費する場合も多く、外部サービスで解決できる課題はそちらで解決するようにしています。2.0からはWorkflowもサポートされジョブの分離、並列実行やマニュアル承認など柔軟なCI制御が可能となっています。Metricsを利用しています。その他にも、いつくかのツールを利用しています。Metricsだけではアカウントを跨いだ参照ができません。そこで、その他のリソース監視も含めGrafanaによって可視化を行っています。ZipkinWebのサービスにおいてSEOは表示に重要な観点となります。その中でも、サイトのパフォーマンスはSEOに直結する要素の一つです。アソビューでは表側で動いているサービスの他に、バックエンドのAPIも多数存在しています。このような、分散されたシステムにおいて、パフォーマンスの最適化を行うため、分散トレーシングとしてZipkinを導入しています。Sleuthにより、容易に分散トレーシングが実現できます。Micrometer・PrometeusAWS上で稼働しているアプリケーションは、標準的に提供されるモニタリング機能でも多くの情報を得ることができます。JVMのGCのモニタリングなど細かな監視まではサポートされていないことが多いです。Grafanaによる可視化を進めています。Adminを利用しています。Proを利用しています。他の部署はWindowsが多いですが、開発時に使用するツールがMacの方が便利な場合が多く採用されています。まとめアソビューでは、様々なサービス、システムを運用しており、それらを迅速改善し、よりに多くの人にワクワクを伝えていく為、様々な技術を利用しています。関連記事2019-12-13EKSでの機密情報の隠蔽にkubernetes-external-secretsを導入してみたアソビュー!SREチームの霧生です。2019の12日目です。