開発者としての体験談:クラウド・アジャイル・DevOps・・・継続的な最新技術の取り込みが重要
レガシー開発からクラウド開発へ
私は、かつて数年にわたって同じシステムを保守開発し続けていました。
オンプレミス環境かつ従来のウォーターフォール開発手法で当たり前のことをやってきました。
アーキテクチャー面や技術要素もかなり古いものでした。
毎回リリース作業が大変で、リリースの際に差分クラスファイルを手動でコピーすることが一番印象に残っています。
そのような中、あるきっかけで新しいシステムの開発に参加させていただきました。
Googleクラウド上にサイトを構築するといった内容で、今まであまり実践がない技術に直面しました。
・SpringBoot、Angular
・Kafka、RDB(Cloud SQL)とNoSQL(Cassandra、Elasticsearch、Redis)
・Kubernetes(GKE)、Jenkins、GitLab、JIRA、Slack など
ボトルネックをなくすため、アプリケーションをマイクロサービス化、ミドルウェアを含むすべてのレイヤーはスケールアウト可能にしました。
データ一致性確保、全文検索、AIレコメンド、CI/CD自動化など色々課題を解決し、様々な困難を乗り越えました。
CassandraとElasticsearch組み合わせてKafkaを介しデータを同期させることが面白かったです。
また、コンテナ基盤にKubernetesを利用し、アプリを簡単にスケールアウトできることがすごく印象的でした。
アジャイル・DevOps基盤構築へ
そして最近では、複数のIoT関連システム開発に関わりました。
これらのシステムの特徴は規模が小さく、開発期間が極めて短いものです。
これを踏まえてお客様とともにDevOps基盤を作り上げました。
基盤構成要素は主に下記のようなものです。
・PKS、Rancher、AWS、Azure、Terraform、LDAP
・GitLab、JIRA、Slack、Concourse、Junit/Selenoid、SonarQube
・DataDog、Gatling/Vegeta など
現在、日本でもコンテナを利用する企業が急増しているといわれている中、DevOps基盤は欠かせないものとなっています。
また、アジャイル開発手法とCI/CD自動化により、開発サイクルが短くなりました。
さらに開発や運用方法が標準化され、新規開発での生産性や品質が高くなっていることを深く感じます。
IoT関連システム開発には、BigData系技術も使われています。
・Spring Cloud DataFlow、Apache NiFi
・Apache Spark、Apache Flink
・Kafka、Solace、AWS S3、Azure CosmosDB、Azure Blob など
OSSとクラウドマネージドサービスを組み合わせて最適なアーキテクチャー案をお客様に提供しています。
この10数年にわたってよく感じるのは、ソフトウェア開発最新技術に対する取り込みは常に行われないといけないといったことです。
現在では、お客様により良いサービスを提供するためには、幅広い知識が不可欠のものとなっています。
プロ意識を持って技術を磨きつづけることが大切だと感じている今日この頃です。