Slide 1

Slide 1 text

Credit Engine, Inc. インフラエンジニア歴2ヶ月の私が
 CDKを使って
 ECS(Fargate)環境を構築する話
 麻生隆道
 1

Slide 2

Slide 2 text

Credit Engine, Inc. 2 今日話す内容(言いたいこと)
 • ピンチをチャンスに変えよう
 
 • CDKはすごく良い!流行ってほしい!
 
 • レビューしてもらうと安心感があがる


Slide 3

Slide 3 text

Credit Engine, Inc. 3 自己紹介
 クレジットエンジン株式会社
 麻生 隆道(あそう たかみち)
 
 たぶんフルスタックエンジニアやってます
 趣味はプログラミングですが、最近本業が忙し くてあまり趣味を楽しめていない模様
 (でも本業=趣味なので問題ない)
 
 前職は12年ほど組み込みエンジニアやってまし たー


Slide 4

Slide 4 text

Credit Engine, Inc. Credit Engine の紹介
 4 “かす”をかえる。“かりる”をかえる。
 ミッション
 中小事業者が融資を受ける際には
 様々な紙ベースの書類が必要であった
 
 オンラインで完結するので簡単に使え
 空いた時間で本来の事業に集中できる


Slide 5

Slide 5 text

Credit Engine, Inc. Credit Engine Platformの紹介
 5 ミッション実現のためLENDYで培ってきたノウハウを金融機関などに提供
 三菱UFJ銀行
 『Biz LENDING』
 みずほ銀行
 『みずほスマートビジネスローン』


Slide 6

Slide 6 text

Credit Engine, Inc. Credit Engine Platformをバージョンアップ
 提供先に合わせて簡単にカスタマイズし
 素早くサービスを提供できるように構成を見直した
 6

Slide 7

Slide 7 text

Credit Engine, Inc. アプリケーション構成
 Nginx
 API
 サーバ
 Postgre SQL
 socket.io
 Redis
 エンドユーザ画面
 バックオフィス画面
 7

Slide 8

Slide 8 text

Credit Engine, Inc. この構成のインフラって誰が作るんだっけ?
 昨年から募集出してるけ ど、全然採用できない・・・
 8 誰もいないなら自分でや るしかないでしょ!
 ということで即席インフラエンジニアが爆誕!


Slide 9

Slide 9 text

Credit Engine, Inc. まずやったこと
 • 要求仕様をざっくり整理
 • セキュリティ:大事
 • 信頼性:これも大事
 • パフォーマンス:あんまり大事じゃない
 • コスト:ほどほどにやればオッケー
 • どんな構成で実現するか決める
 • EC2はメンテがめんどくさいので、できるだけマネージドなやつ
 • dockerベースで構築することは決まっていた
 • ECS(Fargate)が良さそう!
 9 基本的にマネージドなサービスを使って自分で頑張らない!


Slide 10

Slide 10 text

Credit Engine, Inc. インフラ構成
 10 Nginx
 API
 サーバ
 RDS
 socket.io
 Elasti
 Cache
 ALB
 ECS(Fargate)
 これをコードベースで書いておきたいよね・・・


Slide 11

Slide 11 text

Credit Engine, Inc. CDKを採用するまでの流れ
 • CDKが発表されたのはニュースサイトで見ていた
 • プログラマなら言語で書きたいよね!
 • まずはどんなものか調べてみよう
 • CDKでECS(Fargate)環境を作っているサンプルがあった!
 https://qiita.com/ytanaka3/items/e755ff4551f01f76c303
 • マジかよ!ベストプラクティスな構成が書けるらしいぞ!
 しかも、CloudFormationで書くより1/10のコード量!いいじゃん!
 インフラコードを何で書くか?
 11

Slide 12

Slide 12 text

Credit Engine, Inc. 実際やってみて思ったこと
 CDKを書く言語はどれ?
 • 最初Python使ってみたけど環境構築すら面倒だった・・・
 • 現状だとサンプル数が多いTypescriptを使うべきと判断
 スイッチロール+MFAはCDKが対応してない
 • 回避策ありました!(リンク先の最後にある小ネタを参照)
 https://dev.classmethod.jp/cloud/aws/aws-cdk-python-ec2/
 実際のコード量はやっぱり1/10?
 • 318行で書けました → CloudFormationを出力すると3445行!
 12

Slide 13

Slide 13 text

Credit Engine, Inc. レビューを受けた
 副業で手伝ってくれてるインフラエンジニアにレビューしてもらいましたが
 基本的には問題なかった!(レビューしてもらうと安心感が上がる)
 以下、指摘内容
 • CIDRの切り方が大きすぎるので、小さくしたほうが良さそう
 • これはデフォルトでは大きすぎるので修正
 • Fargateから外部アクセスしないならNAT Gatewayはなくても良さそう
 • 外部アクセスあったので問題なし
 • ログ取得用のバケットに582318560864のアクセス権がついてる
 • ALBのログを取得してたからだったので問題なしでしたが、CDKがちゃんと 仕事してることが分かった!
 13

Slide 14

Slide 14 text

Credit Engine, Inc. 残りやること
 CloudWatch + SNS による監視・通知を書く
 
 オートスケーリングの設定も書く
 
 で、完成の予定
 14

Slide 15

Slide 15 text

Credit Engine, Inc. ちなみに・・・
 NAT Gatewayを使わないパターンもやってみました!
 【結果:普通に実現できる!】
 ただし、ecs-patternsをそのまま使うとサブネットが指定できないので、元のソース を以下から持ってきて、サブネットを指定してあげられるように変更する必要がある (時間あるときにPull Request書きたいなー)
 https://github.com/aws/aws-cdk/blob/master/packages/%40aws-cdk/aws-ecs- patterns/lib/fargate/application-load-balanced-fargate-service.ts
 15

Slide 16

Slide 16 text

Credit Engine, Inc. 16 今日話した内容(言いたかったこと)
 • ピンチをチャンスに変えよう
 
 • CDKはすごく良い!流行ってほしい!
 
 • レビューしてもらうと安心感があがる
 


Slide 17

Slide 17 text

Credit Engine, Inc. インフラエンジニア募集中です
 私達と一緒にオンラインレンディングのスタンダードとなるような仕 組みを作ってくれる、1人目のインフラエンジニアを募集していま す!
 CDK好きな人、集まれ!
 17