Learn Tech from AWS Specialist Series ~⑤ (DevTx 編 )

インタビュー 公開日:
ブックマーク
Learn Tech from AWS Specialist Series ~⑤ (DevTx 編 )
スペシャリスト ソリューションアーキテクトの Atsushi さんにDevTX (デベロッパートランスフォーメーション)について教えてもらいました。DevOpsとドメイン駆動設計について、またアプリケーション開発に関するおすすめの勉強方法とそのコツについてもお話ししているので、ぜひご自身のスキルアップにご活用ください!

■プロフィール
アマゾンウェブサービスジャパン合同会社 シニアデベロッパースペシャリスト ソリューションアーキテクト
Atsushi

35年のITキャリアを持つ AWS のデベロッパースペシャリスト

AWSでの業務内容とこれまでキャリアと教えてください。


Atsushi:

Fukui

現在は、PACE(Prototyping and Cloud Engineering)のデベロッパートランスフォーメーション(以下 DevTx)のメンバーとしてお客様のソフトウェア開発や設計に関する課題に対して、ご支援しています。例えば、規模が膨らみ複雑になりすぎたモノリスのアプリケーションをドメイン駆動設計に基づいてマイクロサービスに分割することをご支援したりしています。DevTx はこれ以外にも、アジャイル開発、DevOps、プラットフォームエンジニアリングなど、ソフトウェア開発に関する課題の解決をご支援しています。PACE は APJ(Asia Pacific Japan)全体でワンチームとなっていて、DevTx もシンガポール、オーストラリア、韓国、ASEAN の各国など様々な国のメンバーとのチームになっています。

AWS へ入社する前は、PC メーカーのサポート、フィールド SE、ソフトウェアデベロッパー、アーキテクト、Project Manager、ソフトウェア開発コンサルタントなど様々なロールを経験しており、IT業界での経験は35年以上のなります。特にソフトハウスと SI ベンダーにおけるソフトウェア開発の経験が長く、トータルで20年以上経験しています。そのため、ホストやオフコンから PC へのダウンサイジング、クライアント・サーバーアーキテクチャ、Web 三層アーキテクチャ、XML Web サービス、SPA、コンテナ、サーバーレスに至るまで、様々なアーキテクチャでの設計、実装を経験しています。
AWS へは2015年に入社し、7月で丸9年になります。AWS 入社後は、エンタープライズ系のお客様のアカウント SA を経験した後は、DevOps スペシャリスト、モダンアプリケーション開発スペシャリスト、サーバーレススペシャリストを経て、現在は Developer スペシャリスト SA として DevTx で活動しています。

DevOpsとドメイン駆動設計の概要

モダンな開発手法で最近よく聞く、DevOps・ドメイン駆動開発ってどういったものでしょうか。


Atsushi:
DevOps を理解する上で最も重要なことは、ソフトウェア開発は「人」が行うということです。人がいかにストレスなくお互いを尊敬し、変化に柔軟にかつ迅速に対応するために DevOps というマインドに至ったということを忘れないようにしてください。ソフトウェアは一度開発して終わりではなく、リリース後もビジネスの成長に合わせて継続して開発されるものです。そのため、開発と運用を同じチームで継続して続けることが重要になります。またビジネスの変化に柔軟で迅速に対応するためには、ビジネスとして最も価値を提供できる方法をチームで素早く意思決定し、自律的に計画、行動し、継続的に改善を実施しなければなりません。そのためには10名程度以下の少人数で1つのサービスを担当するチームを構成し、チームで意思決定できる権限を与え、自律的なカルチャーを醸成し、チームで開発から運用、観測、改善のループを回すための適切な人材を用意する必要があります。企業は自身の組織と文化を、それに沿うように変更しなければなりません。このように DevOps は単にソフトウェア開発プロジェクトに留まらず、企業全体の問題として捉える必要があります。なぜならビジネスのニーズに素早く対応して価値を提供すること、そのものが目的だからです。改善の過程でメンバーの負荷を軽減するために CI/CD などの自動化を適用したり、メトリクスを収集して改善に繋げたり、特定の技術領域の専門家を加えて認知負荷を下げたりするかもしれませんが、それはあくまで目的を達成するための手段です。価値を素早く継続的に提供することが目的であることを忘れてはいけません。

ドメイン駆動設計は、ビジネスに詳しい人(ドメインエキスパート)の頭の中にある知識をソフトウェアにストレートにマッピングするための設計手法です。ドメインエキスパートと開発者が一緒になってビジネスを分析し設計に反映させることによって、ビジネスにとっての価値とは何か、そのために実施されるビジネスのプロセスとはどういうものかを開発者が理解することで、より価値のあるソフトウェアを提供することを目指すものです。従来のソフトウェア開発が要件定義から基本設計、詳細設計の工程を経る過程で、ドメインエキスパートには理解できない技術用語やコードに置き換えられてしまい、ドメインエキスパートの意図が開発者に正しく伝わらない弊害を無くそうという試みでもあります。またそれぞれの業務の領域を境界づけられたコンテキストとして定義することで、コンテキスト内にその業務の範囲を限定することで、設計の複雑性を軽減する目的も持っています。そのため大規模なシステム開発で人間が一度に理解できる範囲を超えるような複雑性があるシステムの改善にも利用できます。モダンアプリケーション開発において、モノリスからマイクロサービスアーキテクチャに分解する場合にも利用されるのは、このようなパターンです。

大事なことは「実際に手を動かすこと」「理解できるまでとことん質問すること」

アプリケーション開発に関するおすすめの勉強方法について教えてください


Atsushi:
アプリケーション開発についての名著は多数あって選ぶのが難しいのですが、その中でも日本語で書かれていて、入手しやすい、お気に入りの本を数冊ご紹介します。

アプリケーション開発でおすすめするのは、やはり手を動かすことです。書籍でもサイトでもワークショップでも構いませんが、やはり実際に自分でコードを入力して実行して確認することが、一番の学習だと思います。「急がば回れ」です。ひとつひとつ、理解しながら進むことが結局は一番の近道ではないでしょうか。もう一つは、臆せず質問するということです。よく分からずに一人で悩んでいても何も解決しません。分からなければ、それを知ってそうな人に迷わず質問することです。周りにそのような人がいなければ、ネットを活用しましょう。エンジニアは親切な人が多いので、ボランティアで回答してくれます。その時にひとつコツがあります。自分が質問した内容に対して、自分のとって理解しやすい言葉で理解できるまで明確に説明してくれる人は、その技術を本当に理解している人です。難しい用語を並べて、あとは勉強しなさいというような人は、実はその技術を本当に理解していないかもしれません。理解できるまで、とことん質問して納得できる回答をしてくれる人を見つけることが、一番大切です。他には学習したい技術に関係するコミュニティーに参加するのも良いアイデアです。最初は知らない人に話かけるのは勇気がいると思いますが、コミュニティーであれば、参加者は共通の技術で繋がる仲間です。臆せず、バンバン質問して、学んだ結果を発表という形でフィードバックしましょう。そうすれば、いずれあなたが質問を受ける側になります。これは「Pay Forward」と同じです。素晴らしいと思いませんか。

いずれにしても、理解した内容は実際にコードに書いて実行して経験を積むことが最も大切であることは忘れないでください。

アプリケーション開発におけるAWSサービスのメリット

AWSのアプリケーション開発のサービスについて教えてください。


Atsushi:
AWS のサーバーレスやマネージドサービスを利用する大きなメリットのひとつは、運用工数を大幅に削減できることです。これらのサービスは、スケーラビリティーや可用性を担保し、バックアップやアップデートを自動的に実行してくれるので運用の負荷が削減されます。このメリットは特に開発人材の確保が難しい地方都市にこそ有効です。しかしながら現在の地方都市ではサーバーを中心とした古典的なアーキテクチャを採用されていることを多く見かけます。これは我々 AWS がまだ十分に情報をお伝えできていないことが原因のひとつであると反省しています。いきなりサーバーレスやマネージドサービスを使えと言われても、何からどう始めれば良いかが分からないでしょう。

AWS Amplify

そこでおすすめなのが、AWS Amplify を利用した開発です。この度、AWS Amplify Gen2 が一般公開され、本番環境でのご利用が可能となっています。AWS Amplify は、ブラウザだけでなく、iOS、Android などモバイルデバイスに対応したアプリケーション開発を支援するサービスで、認証、認可、API(REST、GraphQL)作成、データアクセス、通知、ホスティング、リポジトリのブランチごとのデプロイメントパイプラインなど、様々なサービスを提供しています。AWS Amplify を利用して開発を行うことで、自然とサーバーレスの各種サービスを利用することができます。また AWS Amplify Gen2 のサンドボックス機能を利用することで、開発者個人個人が個別の AWS 環境を利用して開発するような体験を利用することができ、他の開発者に影響を与えることなく、様々な確認を行うことができ、サンドボックスは簡単に削除することもできるので、必要なくなれば削除してコストを最適化することもできます。)

おすすめのワークショップ(英語) [Amplify Gen 2 Workshop](https://catalog.workshops.aws/amplify-core/en-US/)

Amazon CodeCatalyst またソフトウェア開発を進める上で役にたつ便利なサービスもあります。ひとつは、Amazon CodeCatalyst です。こちらは、特にチームで開発を進める上で必要な、IDE との統合、コードリポジトリ、ビルド、デプロイ、課題管理、リアルタイム通知などを利用することが可能なサービスです。CodeCatalyst では、ブループリントも用意されており、チームで開発を行う環境を素早く構築することもできます。)

Amazon Q Developer

もう一つのお勧めが、Amazon Q Developer です。Amazon Q Developer は、IDE と統合され生成 AI を用いて開発を支援する様々な機能を提供します。コード補完や提案、生成はもちろん、Java 8 から Java 17 へのバージョン変換、CodeCatalyst の Issue と連携し、更新したコードを Pull Request するなどの機能を提供しています。Amazon Q Developer を利用することで、開発ライフサイクルをより高速化することが可能です。

上記以外にも、AWS からは AWS SDK や Code シリーズを始めとした、開発者を支援するツールやサービスを多数提供しています。ぜひそれらのツールやサービスも利用して、AWS 上での開発を加速して頂ければと思います。

【参考情報】
サーバーレスの勉強方法を聞いてみた。- builders.flash☆ - 変化を求めるデベロッパーを応援するウェブマガジン | AWS

Amazon WoW Careersについて

Amazon WoW Careers は、IT 技術職で働かれている方とアマゾン・アマゾン ウェブ サービス( AWS )社員(技術職リーダー・リクルーター)を繋げるネットワーキング・プラットフォームです。
・IT技術職で働かれている主に女性の方
・技術職に興味があり、これから学びたいと考えている女性の方
上記いずれかに当てはまる方、Amazon WoW Careers  の取り組みにご興味のある方はぜひこちらのウェブサイトにお越しください!
banner1.png

優れた機能性、革新的イノベーション、そして豊富な経験。 数百万のお客様が選ぶクラウドサービス、AWS。 私たちと一緒にクラウドの未来を切り開いていきませんか。 アマゾン ウェブ サービス(AWS)は、世界で最も包括的で広く採用されているクラウドプラットフォームです。 世界中のデータセンターから200以上のフル機能のサービスを提供しています。 急成長しているスタートアップ、大企業、主要な政府機関など、何百万ものお客様がAWSを使用してコストを削減し、俊敏性を高め、イノベーションを加速させています。

テクノロジーと共に成長しよう、
活躍しよう。

TECH PLAYに登録すると、
スキルアップやキャリアアップのための
情報がもっと簡単に見つけられます。

面白そうなイベントを見つけたら
積極的に参加してみましょう。
ログインはこちら

タグからイベントをさがす