メドピア開発者ブログスマートフォン用の表示で見るメドピア開発者ブログ集合知により医療を再発明しようと邁進しているヘルステックリーディングカンパニーのエンジニアブログです。@shinofara(篠原)です。今回調子に乗って、各セクションを英語にしてみたのですが、途中で力尽きてしまいました。それはさておき、みなさんお気づきでしたか?実は2016年11月10にフルリニューアルした、弊社コーポレートサイト(以下、COJP)を公開していました。今までと比べると、とても最近感がありますよね!ちなみに、11月9日時点までのサイトは、以下の画像です。デザイン刷新しただけ?の様に思えますが、技術的な観点でも旧COJPと全く違う物になりました!!今回は、その裏側を紹介したいと思います。renewal.今までのCOJPには様々な課題がありました。複数稼働している状態で、冗長構成に出来ない。overview.リニューアルに対しての、企画要望と課題、そして対応方法Requirement.リニューアルを行う際に、下記の様な要望がありました。等のCMSで入稿したいTOPページとか、更新がめったにないサイトは、デザイナが直接更新したい問い合わせに対して、自動返答+社内に履歴を残したい旧社長ブログや、プレスリリースなどのSNSシェア数などは可能な限り引き継ぎたい(可能な限りとはあるが、これは限りなく100%に近い可能な限り)という感じで、ざっくりまとめると今より色々な面で良くしたいけど、過去は全部引き継いでね♡という感じでした。Issue.あがった要望に対して、見えてきた課題もあります。respond?そんな課題に対して、今回行った対応です。本番用S3に静的ファイルの書きだしを行う事で対応する。view技術的な取り組みとしても幾つか新しい事をやったりもしています。今回のリニューアルでは、技術的に以下の取組を行いました。Docker最近では珍しくなくなってきたDockerをフル活用しています。Dockerを使う事で、再現性のある環境を共有・展開出来るようになり、とある環境では動かないと言った問題が起こりにくくなります。SSH)DockerとECSを使う事で、EC2に対してSSHを用いる事無く、コンテナの作り捨てが出来るようになります。イメージが存在していればトラブルが発生していても、過去の動いていたバージョンにロールバックする事も容易に出来ます。operationエンジニアにデプロイ依頼が発生しているとスピード感が損なわれる為、動的部分以外はエンジニア介入しない公開フローと公開できる仕組みを整えました。使っており、更にステージングではWordPressがPHPで動いているのに対して、本番ではS3からの静的配信になっています。その為、各環境で使っている物が少しずつ変わってきます。各環境毎に利用しているサービスの違い本番/ステージングがAWSですが、開発環境の構成も可能な限り同じものを用意してます。MailCatcherで代用してます。Routingが出来ます。公式提供されていますので、こちらを使います。SESの代わりに使ってるMailCathcerって何?MailCatcherは、SMTPサーバとメールクライアントを同時に提供してくれるアプリケーションになります。開発環境に導入する事で間違えて本番に.....という事故を防ぐ事ができます。Imageを使いまわせる為、便利ですね。configuration今回はAWSのインフラに関して、更に深く書いてみたいと思います。ROLEを割り当てました。?IAMの管理がめんどくさい何かしらの事情で、キーやシークレットが流出したら削除、もしくは変更しないといけないそもそも秘密情報の管理方法を考えなくてはいけないなど管理面でワズらしい事がおきてしまいます。EC2に紐付けるとどうなるの?EC2に紐付けると上記問題は解決できますし、この割当てられたEC2からしか各サービスへのアクションを行えなくなります。これだとEC2に入れれば許可された範囲で何かできてしまうのでは?となりますが、この点に関してはキーを発行した場合でも同様の事が言える為、別の問題という事になります。Difinition作成などは、自作のスクリプトで行っています。強制再構築されそうになる時がたまにあります。書かれているので、見ていれば気付けるのですが、見逃すと怖いですね。vpc_security_group_ids.更に言えば、複数のサービスに関わっていると、それぞれを実行したバージョンが違ったりと、毎回最新に追従できていれば問題無いのですが、なかなか出来ない事もあります。hashicorp/terraformを使っています。簡単な使い方は、下記のとおりです。${OPTION}その他利用可能なバージョンはこちらこのようにして置くことで、違うバージョンで実行してしまって再構築が走ったりするリスクは回避できます。※でも頑張って追従しましょうね。ALBいいツールが見つからなかったので、自作しました。Finallyこのような感じで、COJPのリニューアルが完了しました。Dockerイメージ管理下の、WordPressや、Railsはエンジニアの手が必要ですが、日々運用に置いてはエンジニアレスを実現する事ができました。全てのコンテンツを静的配信化することで、スケールしやすくもなり、負荷に怯える日々もなくなりました。(S3のお金は...)それに、ECSを使うことで、厳密にはDockerを使う事で、CVEなどの対応時に、稼働中のサーバ更新・再起動して動くか分からないと怯えるという事があったのが、動く事を保証した上で、イメージ再作成も行えるようになりました。SREの侘美(たくみ)です。