目次

まえがき

第1章 Terraformに疲れたのでAWS CDKを使っていきたい話

1.1 Terraformのツラミ
1.2 AWS CDKとは
1.3 まずはひとつリソースを定義してみる
1.4 リソース定義の手順を確認する
1.5 スタックを削除する
1.6 FargateなECSクラスタを立てる
1.7 CI/CDパイプラインを作る
1.8 CDK Pipeline
1.9 小ネタ
1.10 まとめ

第2章 Serverless Frameworkを用いたサーバーレスアプリケーションの構築

2.1 過去のサーバーレスアプリケーション開発の問題
2.2 Serverless Frameworkとは
2.3 Serverlessの仕組み
2.4 フォースタでの利用例1
2.5 フォースタでの利用例2
2.6 まとめ

第3章 社内プロダクト開発の特徴を考える

3.1 はじめに
3.2 社内向けプロダクト開発の意義
3.3 プロダクトは誰のもの?
3.4 社内プロダクト開発の注意点
3.5 社内プロダクトを開発する面白さとは
3.6 おわりに

第4章 挫折した人向け ふりかえり再入門

4.1 ふりかえりとは
4.2 ふりかえりの型
4.3 ふりかえりを続けるためのコツ
4.4 まとめ
4.5 おまけ

第5章 ゼロから開発組織を立ち上げて学んだこと

5.1 歴史
5.2 気をつけた方がいいこと
5.3 まとめ

あとがき

まえがき

 まずは「for Startups Tech Book Vol.1 — スモールチームで開発するためのプラクティス —」を手に取っていただき、ありがとうございます。


本書は、フォースタートアップス株式会社(以下、フォースタートアップス)のシステム開発チームである「テックラボ」の有志メンバーによる共著となります。


簡単にフォースタートアップスについて紹介させていただくと、私たちは「for Startups - 全ては日本の成長のために。スタートアップスのために。」というビジョンのもと、インターネット/IoTセクターをはじめ、Fintechやリアルビジネス領域も含めたIT、AI、SaaS、DeepTech、DisruptTech、ドローンテック、MaaS、5G市場などの転職支援と起業支援を中核とした、成長産業支援事業を推進しています。


テックラボでは、成長産業支援事業における課題をテクノロジーで解決すべく、社内向けのプロダクト「タレントエージェンシー支援システム(SFA/CRM)」や、成⻑産業領域に特化した企業情報プラットフォーム「STARTUP DB(スタートアップデータベース)※」を展開しています。


※スタートアップを中心とした13,000社以上(※2020年12月時点)の企業情報を掲載


本書の中では、上述のシステム開発を通じて得られた知見や、現在も開発現場で実践している手法などを、エンジニアのメンバーとCTOが執筆しています。


対象読者としては、スタートアップや小規模チームでインフラを担当する(または予定している)エンジニアや、プロダクトオーナー、アジャイル開発を実践中のチーム、またエンジニアメンバーをマネージメント管理するポジションの方などです。各章に文章としての繋がりや関連はありませんので、目次をご覧いただき、興味を持った章から読み進めていただければと思います。


本書は『技術書典10』に初出展した時の内容に、一部加筆・修正を加えております。拙い文章ではありますが、最後までご拝読いただけたら幸いです。

第1章 Terraformに疲れたのでAWS CDKを使っていきたい話

2019年に、Infrastructure as Code界に現れたAWS CDK。ようやくちゃんと向き合うことができたので、経緯やサンプル、小ネタもはさみつつ紹介していこうと思います。

1.1 Terraformのツラミ

 フォースタートアップスではIaCとして、HashiCorp社が開発しているOSSのTerraformを採用しています。


 Terraformは、HCL(HashiCorp Configuration Language)というDSLを用いてリソースを定義していきます。特徴として、管理対象プラットフォームごとに「プロバイダ」といわれるプラグインがあります。公式に提供されているプロバイダ以外にも、カスタムプロバイダという形でユーザーが独自にプロバイダを作ることができます。


 そういった設計からもわかる通り、TerraformはAWSやGCP・Azureといった有名どころのIaaSだけでなく、様々なクラウドプラットフォームのインフラを定義することもできます。


 これだけ聞くと「すごいじゃん、全部Terraformで定義しちゃえばいいんじゃないの?」となると思いますが、現実とは、そう簡単にはいかないもの。運用していくうちに、ちょいちょいと問題(というほどでもありませんが)が出てきました。


 まずは、その独自のDSLやプロジェクトの構成によるもの。


 フォースタートアップスでも昨今の流れに違わず、各ドメインのコードをマイクロサービスとして、別のプロジェクトにしています。対して、インフラ担当はSRE一人のみ。さすがに無理があります。全体の共通基盤ならばまだしも、各サービスごとのアプリケーションインフラに関しては、それぞれの開発チームである程度担保できると、いざというときにも安心です。


 そうなった場合、完全な独自DSLであるHCLや特徴的なディレクトリー構成・モジュールシステムというのは、普段アプリケーション(フォースタートアップスでは主にRailsやVue)を書いているエンジニアにとってはとっつきにくく、習得にもオーバーヘッドがあります。やはり、普段書いているプログラミング言語に近い構文やモジュールシステムである方が、なにかと効率がいいのは間違いありません。


 そしてもうひとつは、その柔軟性ゆえに、記述しないといけないリソースが多い、ということが挙げられます。


 「そんなの当たり前」という意見ももっともではあるんですが、そもそもAWSやGCP・Azureといったクラウドインフラは、正直言って細かいリソースに関してはよくわかっていなくても、環境を作ることができるというものでした。もちろん、わかっていないとカスタマイズしたり、いざというときに修正したりといったことができないので、知らなくてもいいというわけではありません。ですが、知らなくてもできるというのは、明確なメリットだったはずです。


 Webのマネージメントコンソールからポチポチしていけば、その「知らなくてもできる」ができていたものが、Terraformを使うと、全てのリソースを自力で定義しないといけません。インフラの知識云々というよりも、その時間、人的コストは馬鹿にできないものがあります。


 上記から、Terraformで全てのインフラを管理することに対して、エンジニア全体として少なからず負担になっていました。

1.2 AWS CDKとは

 そこで候補に上がってきたのが、AWS CDKです。


 AWS CDK(Cloud Development Kit)とは、「AWSリソースを既存の言語を用いて構築することができる」フレームワークのことで、2019年7月にGAとなっています。


 対応言語は2021年3月現在、TypeScript(JavaScript)、Python、Java、C#の4種類(5種類)ですが、GA当初はTypeScriptとPythonだけだったので、今後も増えていく可能性はあると思います。

 ※2021年4月末にはGo言語も開発者プレビューですが、利用可能となっています。

https://aws.amazon.com/jp/about-aws/whats-new/2021/04/aws-cloud-development-kit-aws-cdk--v2-and-go-cdk-is-now-available-for-developer-preview/


 構築自体はそれらプログラミング言語で行うことができますが、バックエンドではCloudFormationが使われており、AWSのマネージメントコンソールから、その存在を確認することが可能です。


 「AWS」と冠している通り、定義・操作できるのはAWSリソースのみで、GCP・Azureはもちろんのこと、Auth0などのTerraformでプロバイダが提供されていたようなプラットフォームにも対応していません。当然ですが。

 なので、それらプラットフォームのインフラを扱う場合には、採用できないです。


試し読みはここまでです。
この続きは、製品版でお楽しみください。