APIをコード化し、自動で運用できる仕組みを構築
手塚氏は、このCI/CDとInfrastructure as Codeを、APIマネジメントにも適用した「API Management as Code」によって、APIライフサイクルを自動で回す仕組みを構築しようというのである。
設計、実装、テスト、デプロイ、公開、運用と流れていく一連のAPIライフサイクルをマネジメントする上で、どこからコードを取り込んでいくのか。その中でも重要な役割を果たすのが「OpenAPI Specification」。これを使って、APIの定義を行っていく。定義が決まったら実装し、テストをする。このテストを自動化するときにも、「OpenAPI Specification をうまく使うこと」と手塚氏は言う。さらにこういったテストやデプロイをCI/CDで安全に回していくためのプラットフォームとして、「コンテナを選択することが最近のベストプラクティスになっている」と手塚氏。公開時にはAPI管理製品を使ってAPIの整理やセキュリティのチェックが必要になるが、このAPI管理製品のコンフィグもコード化し、パイプラインから呼び出せるようにすべきだという。「設計から公開に関わる全てのリソースを、コードで定義できるようにし、かつGitでバージョン管理できるように実装していくこと。こういう仕組みが実現できれば、新規にAPIを公開するときはもちろん、APIの変更が頻繁に行われる世界になっても、安全に管理することができます」(手塚氏)
ここで手塚氏はCI/CDパイプラインでAPIをデプロイする際の5原則を紹介。この5原則の詳細は同社のブログ(英語)にも記載されているという。
1.コントラクトファーストなアプローチ(APIの定義から入っていくアプローチ)
2.テスト可能であること。特にAPIの性質上、対向するアプリケーションの開発者に受け入れてもらえる品質か、対向テスト(受け入れテスト)が非常に重要になる
3.セマンティックバージョニングを堅守せよ(メジャーバージョン、マイナーバージョン、パッチバージョンなどの定義をしっかり決めて運用に反映させる)
4.べき等性を保つこと(利用するAPI管理ツールのコマンドはべき等性が考慮されているか)
5.API Management as Codeの原則を適用すること(API管理に関する全てのリソースはGitで管理され、デプロイされる)
APIはコードから定義する場合だけではなく、コントラクトファーストレベルのインタフェースから定義するパターンもある。「マイクロサービスのように一つのAPIの独立性を担保させたい場合は、コントラクトファーストなアプローチが有用だと考えている。そういう意味でも、OpenAPI Specificationを使ったコントラクトファーストのアプローチで作っていくことを推奨しています」(手塚氏)
コントラクトファーストなアプローチを支援するツールも登場している。「Apicurio」はOpenAPI Specificationを作成するためのツール。ブラウザで起動し、GUIで簡単に作っていけるという。
対向テストに便利に使えるのがApicurio StudioとMicrocksの連携。これによりAPIのモックテストが簡単にできるようになる。加えて、CI/CDを実現するのに役立つ機能を提供するのが3scaleである。REST APIやCLIに対応しているツールに使うことで、APIゲートウェイでのAPI管理が容易にできるようになる。
「APIは企業や組織のプロダクトであり顔である。その価値を最大化するためにも、APIをコード化し、APIリリースサイクルを安全に回していくこと。APIの開発においては、このことを常に念頭に置いてほしい」と手塚氏は呼びかけた。
今回、手塚氏が登壇したのは、Women's Leadership Communityというグローバルで活動する同社コミュニティの日本のリーダー的存在の人にチャットで声をかけてもらったことがきっかけとなったという。レッドハットにはWomen's Leadership以外にもさまざまなコミュニティが活動を行っており、「登壇することでコミュニティや会社に貢献したいという思いがあった」と手塚氏は話す。
とはいえ、今回のような公開の場で話すのは勇気が必要になる。それを後押ししてくれたのが、レッドハットが大事にしているカルチャーの一つ「Courage:勇気」だったという。「常日頃から一歩を踏み出すという文化に触れていることが、登壇を後押ししてくれた」と語り、セッションを締めた。