Upgrade to Pro — share decks privately, control downloads, hide ads and more …

SAMを使った通貨変換API開発

 SAMを使った通貨変換API開発

Masahiko Funaki(舟木 将彦)

November 08, 2021
Tweet

More Decks by Masahiko Funaki(舟木 将彦)

Other Decks in Technology

Transcript

  1. 4 開発プロセスを自動化し、早く、セキュアで、スケーラブルに CircleCI の簡単な自己紹介 世界最大の CI/CD サービス プラットフォーム • 開発生産性を向上

    • より早く、確信を持って、セ キュアにソフトウェアをリリー スするサポート クラウドネイティブな CIの「リー ダー」 • 毎日 AWS 上で200万 CI/CD パイプラインを 実行 • 4万以上の組織の100万人 以上の開発者が利用
  2. 5 AWS 利用メリットを CircleCI でさらに引き上げる 早く、セキュアで、コストパフォーマンス良く DevOps 成熟度 リリース頻度・回数が 少ない

    待ち時間が数多く発生 スケールしないビルド環境 AWS での使用に最適化 他の選択肢よりも早い CI/CDを実現 スケール可能〜開発時に待 ち時間を発生させない セキュリティ 厳しすぎるコンプライアンス が制約に 専業ベンダーのソリューショ ンを取り込みたい SOC-2 に準拠し FedRAMP 認証取得 専業ベンダーの セキュリティー ソリューションとの連携 GovCloud 対応 CI/CD コスト高 CI/CD インフラの 管理に忙殺 使用量ではなく、 インフラサイズでの費用 CircleCI が管理する マネージドサービス 使用量に応じた課金
  3. 自動化の導入で開発プロセスにおける待ち時間を最小化 アイ デア コード ビルド テスト リリース デプ ロイ 運用

    監視 継続的インテグレーション (CI) 継続的 デプロイ (CD) 自動化できない 非正常系は 自動化できない 自動化できる →継続的であるために自動化し、人の待ち時間を最小化 事業が継続する限り、アイデアが生まれ、プロジェクトは続く コード追加・修正時は 常にビルド・テスト (最後にまとめてやらな い→早く失敗すれば 早く品質が安定する) サービス停止せず常に リリース/デプロイ (失敗時にはクイックに 修正 / 前バージョンに 戻せる)しくみ 共有 リポジトリ上 で 常に作業 運用・監視しやすい 品質をコードに反映 (必要なデータの取得、 スケーラビリティの 確保)
  4. 開発するもの: 通貨変換APIをサーバーレスで実装 APIエンドポイント http://サーバーのアドレス/api/<コマンド>... GETリクエスト コマンド パラメータ 説明 list (なし)

    変換可能な通貨(unit)と変換レート (rate)を格納した配列をJSON形式で通 知 convert unit=通貨短縮形(英字3文字) value=変換元金額 通貨短縮形(unit)が示す通貨で設定し た金額(value)を日本円に変換した 結果(amount)をJSON形式で通知
  5. 12 開発プロセス[人]: コード プラン コード ビルド テスト リリース デプ ロイ

    運用 監視 継続的インテグレーション (CI) 継続的 デプロイ (CD) 人が作業 CircleCI コンフィグに ジョブ定義 仕様策定 app.js app.test. js build_api ジョブ test_api ジョブ CircleCI ジョブ間で 情報共有 キャッシュ ワークスペース 環境変数(コンテクスト) release_api ジョブ deploy_api ジョブ
  6. 開発プロセス[自動化]: ビルド〜テスト プラン コード ビルド テスト リリース デプ ロイ 運用

    監視 継続的インテグレーション (CI) 継続的 デプロイ (CD) 人が作業 CircleCI コンフィグに ジョブ定義 仕様策定 app.js app.test. js build_api ジョブ test_api ジョブ CircleCI ジョブ間で 情報共有 キャッシュ ワークスペース 環境変数(コンテクスト) release_api ジョブ deploy_api ジョブ
  7. 開発プロセス[自動化]: リリース~デプロイ プラン コード ビルド テスト リリース デプ ロイ 運用

    監視 継続的インテグレーション (CI) 継続的 デプロイ (CD) 人が作業 CircleCI コンフィグに ジョブ定義 仕様策定 app.js app.test. js build_api ジョブ test_api ジョブ CircleCI ジョブ間で 情報共有 キャッシュ ワークスペース 環境変数(コンテクスト) release_api ジョブ deploy_api ジョブ
  8. 自動化における4つの評価ポイント CircleCIユーザーの 中央値(2020/08) CircleCIが考える目標値 スループット ワークフローの実行数 0.7回/日 プルリクエストのマージごと いつでも(遠慮せずに)ビルド可能 実行時間

    ワークフローの実行時間 4分以内 5~10分 自動化可能なことは全て任せる 復旧時間 ワークフローの失敗~成功の時間 56分以内 60分以内 大きな失敗を最後にではなく、すぐ に復旧できる失敗を早期に 成功率 ワークフローの成功数/実行数 デフォルトブランチで 80% デフォルトブランチで 90%以上 ここの数値に「近い目標」として まずは追いつき ここの数値を「あるべき姿」として 目指す 現時点での数値を「課題」として 把握した上で