はじめに
今年もデブサミに参加してきた。但し今回は2日目だけ。参加したセッションは下記の通り。
【15-E-2】CI/CDを使い倒して数段上のソフトウェア開発をしよう!
【15-E-3】Entertainment x Tech~多くのアーティストとファンを繋ぐ技術と組織~
【15-E-4】中国・深センのテクノロジー最新事情
【15-A-5】ゲーミフィケーションエバンジェリストが説く、アプリ開発で見落としがちな「おもてなし」とは~面白さを伝える × 面白く魅せる~
【15-B-6】サーバーレスで最高に楽しめるアプリ開発
【15-B-7】無意味なアラートからの脱却 〜 Datadogを使ってモダンなモニタリングを始めよう 〜
【15-E-8】アウトプットのススメ ~技術同人誌・LT登壇・Podcast~
今回、翔泳社「CodeZine」のtwitterカウントがセッションごとにまとめを作ってくれているので、それを合わせて読むと効果的と思われます。また、自分が参加したセッションから印象的だったものについて、まとめを書くことにします。まずはこれから。
【15-E-2】CI/CDを使い倒して数段上のソフトウェア開発をしよう!
togetterまとめはここ
スピーカーはCircleCIの金 洋国さん。CI/CDについて「What」「Why」「Why not」「Beyond」の4点から語るという構成になっていて、「なぜCI/CDに取り組むべきか」という命題に対する理解が深まったと思います。
<前置き>
・CI/CDは戦国時代:Google/Azureなどビッグクラウドの参入、スタートアップの買収など
<CIについて>
・What:テストを自動化し、常に同じ手順・環境で、見落としやミスなくテストすることを実現する
・Why:テストは書くだけでなく、確実に実施し、テストが壊れていないことが必要。そのため、CIを唯一のテスト環境とし、テストも常に最新化することが望ましい
・Why not:テスト文化の布教には時間がかかる。が、テストが無くても、構文チェックなどタスクレベルの自動化からCIは導入できる
・ツール選定⇒タスク自動化⇒可視化⇒マージブロック化⇒テスト追加と自動化の順で
・「jenkinsおじさん」問題(CIシステムのメンテナが必要)⇒クラウド化(CircleCIとか)
・Beyond:CD導入ができるようになる
<CDについて>
・What:CDは厳密のは「D」の違いで2種類ある
・C-Delivery=常にリリース可能な状態に保つ
・C-Deployment=Deliveryに加え、自動でリリースまで行う
・Why:リリース後の問題(障害、仕様ミス)への対応として、フィードバックループを早く回すために必要
・Why not:CDを始めるうえでは「技術的問題」と「組織的問題」がある
・技術的問題=密結合などアーキテクチャがCDに向いていない(エンタープライズなアプリなどに多い)
⇒時間をかけて直すしかない(サービスの疎連携化、OSSなどモダン化)
・組織的問題=「良い解が見つからなかったので、誰か教えてください!」
⇒(個人的意見:CI/CDのメリットをいかに上層部に理解してもらえるか、だと思う)
・CircleCIでも、CD導入までは約1年かかった(Docker/k8s導入とマイクロサービス化)
・Beyond:プログラミングとリリースに対する、圧倒的な心理的安全を実現できるようになる
・迅速なロールバック
・本番環境でないとテストできない場合への適切な対処
・高度なリリース方法(カナリーリリース、グリーンブルーデプロイなど)
<CI/CDの未来>
・CI⇒C-Delivery⇒C-Deploymentの流れには常に「自動化」があり、今後の進化も「自動化」がキーになる
・例えばCI/CDの導入作業や環境構築など
<所感>
・「組織的問題」に良い答えが見つかってないというのは誰しも共感できたのでは。まずどんな領域でもいいから自分でやり、それを見せる所から始める、ってとこですかね。
ピンバック: デブサミ2019に参加してきた(2) – ぼっちの王国
ピンバック: デブサミ2019に参加してきた(3) – ぼっちの王国
ピンバック: デブサミ2019に参加してきた(4) – ぼっちの王国