【所属】
所属としてはいわゆる基盤チームというチームに属しています。
サービスの細かい機能を開発しているわけではなく、開発チーム全体に開発基盤を開発して提供、新技術の布教などをしています。
プロトタイプの開発もしますが、コーディングもしています。
【改善中】
現在はモノリシックなアーキテクチャをサービス開発をしている裏で移行開発しています。
サービスは現在300万会員を越えていて、店舗のPOSとの連携などもあり、全体的には複雑化しています。
複雑化に対抗するために、サービスを小さく分けてマイクロサービス化しようと言うことを提案しました。
現在進行で変更中です。
モノリシックの方はSeasar2+Java6を使っていることもあり、開発もしづらくリリースのリスクも高いシステムであるため、現在はSpring Bootを2年前の時点で採用してバージョンアップに対応しつつ開発を続けています。
当時Spring Bootを選定した理由は、Spring Frameworkをベースにしてまずは簡単に使い始められるという利点が大きく、既存の開発者向けにJavaの知識を再利用できる上に効率の良いコードを書けると判断してSpring Bootとしました。
もちろん、見た瞬間にこれはイイ!と直感的に感じたからでもあります。
また、サービスを分割する際に考え方としてDDDの勉強を初めて、社内で読書会を主催したりまたこちらでDDDの開発支援をしています。
最近はDDDだけでこれまでのCRUDなAPIをベースに考えているとAPIの作りにもムリが出てくるし、データ構造もいつまで経っても変えられそうにないということで、イベントソーシングとCQRSの考え方を取り入れて開発しようかなと思い始めているところです。
マイクロサービスですので、Javaで作成したAPI以外のものもあります。
最近はGo言語が好きで、Go言語を使用したAPIを作ったり、Docker Swarmを便利に使うためのコマンドラインツールを作成しています。
【Google Cloud Platform】
別のサービスでは、新規作成する予定だったのと、オープンなAPIとして公開する可能性もあったため、インフラを新しく管理する手間などをかけたくなかったため、Google App Engineを採用しました。
言語はGo言語です。
これに着手したのは2015年7月頃です。
Goのシンプルさがいいなと考え、またスケールアウトすることも考えてGAE/Goを採用しました。
その他、Google Cloud Platformにオンプレの環境を移行していったりしています。
基本的に全てのサービスがオンプレですが、一部のサービスをクラウドに移行することを実施中です。
好きなサービス・機能はGCS(Google Cloud Storage)とMetadata Serverです。
最近は環境の構築ツールとしてTerraformを使ってGCP環境の構築を行っていますが、Deployment Managerも悪くない気がしてきています。
また、個人的にはGCPユーザーグループの支部を運営中です。