メドピア開発者ブログスマートフォン用の表示で見るメドピア開発者ブログ集合知により医療を再発明しようと邁進しているヘルステックリーディングカンパニーのエンジニアブログです。@shinofara(篠原)です。プロダクトについてのお話をしたいと思います。長いですが、お付き合いいただければとてもうれしいです!※関係無いですが、gopher君可愛いです。French(http://reneefrench.blogspot.jp/)さんによって作成・公表されました。License(http://creativecommons.org/licenses/by/3.0/)で保護されています。本題に入りたいと思います。リリースを行いました。アプリ開発を除くと、PHP以外で開発した弊社初のプロダクトになります。開発に関して下記の三点にフォーカスしてお話していきたいと思います。して、今まで提供してきました。スケールさせ続ける事は可能ですが、以下の様な問題が発生しやすくなります。小さい機能ひとつのデプロイだとしても、アプリケーション全体に影響を与える事が考えられます。ソースコードの肥大化に伴い、複雑性も高まってしまう為、修正の影響範囲が特定し辛くなると考えられます。Blogなどで公開されておりますので、今回は省略させていただきます。株式会社FiNCがslideshareに公開した、以下のスライドがわかりやすいかと思います。化を実現する為に、クライアントの認証と、APIへのアクセス制御を考慮した結果ゲートウェイの開発を行う事となりました。実際に作成したゲートウェイの簡単な図を載せておきます。やってみようという事になりました。求められている事は何なのか?求められている事に一番最適な言語は何なのか?最後の方は勢いだったかもしれません。以下の内容になります。Go言語(Golang)なのか?静的型付け言語である事コンパイル時に、型の不整合に起因するバグを捕捉する事ができます。それ故に開発サイクルの後でバグ修正する多くのコスト、またはその場所で起こる多くのバグのコストを取り除く事ができるからです。メリットは分かるのですが、やはり動的型付け言語経験者からすると、煩わしかったりもします。型推論があるおかげで、静的型付けで型の恩恵を受けながら違和感無く開発できますので、とても親しみやすいです。十分な標準ライブラリが潤沢ですので、言語自体をインストールするだけで大抵の事が可能になります。コンパイルする手間は発生してしまいますが、コンパイル後のバイナリを実行するだけでアプリケーションを立ち上げる事ができます。本番構築に関しては後述しますが、環境構築をとてもシンプルに保てると思いました。Golangにする事で発生するデメリットは何なのか不慣れな言語に対する学習コストGolangで実戦経験0の状態で着手した事も有りますが、どんな言語でも学習コストは発生してしまいます。vendorを使ったコンパイルをサポートはしているが、管理に関してはまだです)今後この辺りが公式サポートされるのかは要観察です。ゲートウェイのインフラ周辺、利用したライブラリや、技術について今回は深くは説明することが出来ませんので、使っている環境、技術などをさっと紹介したいと思います。詳細に関しては、またお話させていただければと思います。使って確認を行っています。以下のコマンドを使ってコーディングスタイルなどの統一化を行う様にしています。良くなかった事でも書きましたが、まだ公式では依存するパッケージのバージョン管理方法に関しては、未サポートなので、実行タイミングや、実行者、環境によってパッケージのバージョンが変わってしまう問題が発生してしまいます。参考にして、バージョンの固定とvendorを使ったコンパイルを実現する事で、誰がコンパイルしても同じ結果を得られる状態にしています。似た、glideを使ってvendorのバージョン管理しています。優先して参照させるようにしています。現在の所、特に問題なく使えてるため、最近はオススメっす!といろいろな場所で話をしています。使ってスキーマ管理とマイグレーションを行っています。使って見た感想としては、とてもシンプルで使い勝手がよく現時点では満足しています。バリデーションバリデーションには、gojsonschemaを採用しています。使う事で、ドキュメントとバリデーションの設定が同時に変更できるというメリットを得ることができています。標準に用意されているtestパッケージのtestingを使っています。無く不便かな?と思ってましたが、特に不便なく使えています。以下の様に記述しています。vendor);一覧がGreenだと嬉しいですね!テスト結果はこんな感じです。フレームワーク使用しておりません。この辺りに関しては、次回お話できればと思います。本番環境構築ゲートウェイの本番環境は、AWS上に構築しています。構築に利用した技術は、以下の2点です。いくつか必要なパッケージがありますので、それらの構成管理として利用しています。terraformはvpc全体のインフラ構成を管理する為に利用しています。どちらもなれるまでは大変でしたが、なれてみると一昔前の構築にものすごく時間がかかっていた時代は何だったのか!と思いました。開発からデプロイの簡単な流れ今回は各工程の深掘りは出来ないですが、よくある図で表してみました。使ったプロジェクトはリリースで終わりではありません、ここからが本当の意味でのスタートとなります。今後は、更に踏み込んだ技術のお話などをブログで公開していく予定です。SREの侘美(たくみ)です。エンジニアの宮原です。chromeへ移行する時に気をつけることこんにちは。月別アーカイブリンク医師専用サイト「MedPeer」エンジニア採用はこちら!スターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。