現状分析とこれから。

最近割と自分のやりたいことができているように感じているので、自分が今どういう仕事をやりたいと思っているのかを洗い出すとともに、やりたい仕事に対してどのようにアプローチをしていくかを考えてみようと思います。

自分の環境

- エンジニア2年目
- Webサービス+スマホアプリ開発(現行サービスの刷新)
- 開発手法は2週間スプリントのスクラム
- メインのIaaSはAWS
- 言語はAngular/Typescript/Node.js

1日のサイクル

:AWSの本読んだり、SRE本読んだり
午前中:チケット消化(スクラム開発なのでね)
:軽く技術系の記事を読む
夕方まで:チケット消化
夕方:チームでコードレビュー
業後・業務中の気分転換:AWSのサービス使って開発の効率化

何が良かったのか

CI/CD環境を構築できた
 前々からうちのチームではデプロイの手間が問題視されていました。例えばLambdaだと、Typescriptで書いているのでbuildと容量が大きいものに関してはS3に資源をデプロイし、コンソールから操作をして初めてデプロイが可能になります。まぁ手間なんですよね。

少し話は変わりますが、昨年中頃より私もAWSの勉強を初めてSAAやDVAの取得もしてきました。そういった知見を活かすとしても、自分にとって経験を積むとしても良いタイミングだなと感じていました。
そんなこんなでDocumentと格闘しつつ今まで社内Backlogで管理していた資源を全てCodeCommit上に移行し、CodePipelineを通して指定のブランチへのプッシュをトリガーにそれぞれのAWSリソースへ自動でデプロイが走るように環境を構築することができました。本番リリースされていない資源だからこそ容易に移行することができましたが、やはりこのタイミングでこのような環境は構築すべきだなと感じました。これでデプロイの手間という問題は解決することができました。
CI/CD環境構築後はメンバーから『自動でデプロイまで走ってくれるのは最高だ』といった言葉を何度ももらいました。実際自分で開発していても思いますが、段違いに効率が上がりますしbuildやデプロイの作業を自動化することbuild時の環境の指定やS3へ格納時のバケットの指定を環境変数として設定することでヒューマンエラーも同時に防ぐことができます。

作成した環境を改善する
 せっかく構築したCI/CD環境もただ単純に自動でbuild、テスト、デプロイされるだけでは物足りないですよね。業務として環境構築は行ったのでここから適当な時間を使って環境の改善を行いました。
デプロイが自動化されたといっても結局同じ作業は行われるのでデプロイまでの格段に時間が減るわけではありません(Codebuildで利用されるマシンスペックがいいのか、多少は工程ごとのスピードは早いですけどね。)。つまり"いつ"デプロイが完了したのか知りたいわけです。デプロイされたことが通知されるならその間は開発者は別の作業ができるので、作業時間の最適化が可能です。そこで見つけたのがこの記事です。

https://aws.amazon.com/jp/blogs/news/receive-aws-developer-tools-notifications-over-slack-using-aws-chatbot/

これを使うと、CodePipelineの任意のアクションをトリガーに指定したSlackチャンネルへ通知を飛ばすことができます。通知の仕組み自体は15分くらいで完成し、料金自体もSNSの発行量のみなのでほぼかからない認識です。
この仕組みを利用し、私のチームではパイプラインの開始・終了・失敗で通知を受けることができるようになりました。
また、このブログで紹介されている仕組みはパイプラインだけではなく、CodeCommitの状態変化をトリガーに通知を送ることができます。これを利用して、例えばプルリクエストの発行時やコメント、また承認制にした際にメンバーからの承認を受けた際の通知など、割と柔軟に通知を送ることができました。
といった形であらゆる場面に通知を仕込み、パイプラインが仕事をしている時は開発者は他の作業に取り組むことができるようになりました。これについてはAWS様々で簡単に構築できましたが、やはりこういった経験の積み重ねが大事だと思ってます。

固定値の値を全て環境変数化したり、Cloudformationを利用して変更のあった資源のみデプロイを実施したりなど(できるかは知らない)、まだまだやりたいことは残っているのでじわじわ進めていこうと思います。

ここで良かったことはこういった作業をすることに対して自分が達成感ややりがいを感じることができたことなんじゃないかなと思っています。自分で整備した環境で開発をすることやあらゆる作業を効率化していくことが今一番楽しいですね。

開発もやる
 これまで環境の自動化について書きましたが、同時進行で開発もしっかりやっています。AngularでWebサービスの管理画面的なものを作成しているのですが、Typescriptいいですね。もう型がない生活には戻れないと思うくらいTypescriptの整理されたソースコードが好きですね。また上で環境が自動化されているので自分でもその恩恵をしっかり受けることができます。そんな感じで開発中は割と没頭してコードを書いているのでやっぱり自分はプログラミングしている時間も好きなんだなと感じることができたことが良かったとも思ってます。

外部イベントにも行く
 
最近は流行病の影響もありオフラインイベントの開催がありませんが、ここ2ヶ月くらいでちょこちょこイベントにもいってました。
例えば1月30日にはGoogle Cloud Anthos Dayに参加を機にGCPを利用してみて、初めてAWS以外のメジャーなSaasプロバイダーにも触れることが出来てまた世界が広がったなーと感じました。
2月14日にはDeveloppers Summitに参加し、最近気になるNew Relicのセッションを聞けたことは良かったですね。自分のメインはアプリエンジニアだったので、運用といっても経験則や先輩の姿を見て学ぶことが多かったですが、セッションを通して監視ツールの使い方、またその目的などを学ぶことができ、エンジニアとしての幅を広げることができたり、監視という分野により興味を持つことができたことが良かったですね。

個人的に外部イベントに参加することはおすすめです。自分の知らない世界が見える・興味を持つきっかけになる。他のエンジニアを見ることでモチベーションに繋がる。参加レポやセッションを聞いて試したことなどアウトプットの機械にもなる。至れり尽くせりだと思います。
最近は自分も登壇して、イベントを内部からも盛り上げてみたいって思うようになりました。

あとは業務の一環としていけたらなぁ。個人的には気楽の業務時間に送り出してくれるような福利厚生が嬉しいですね()

アウトプットが増えた
https://note.com/googlesensei/n/nb8a2e034d89f**
 **新年の目標で『プラットフォームを問わず記事を12以上書く』とあげましたが、2月だけで5個も記事を書いていました。(ITに関係しない記事は除く)そのうちの4つは技術系の記事でQiitaにも上がっていますが、そういった形でアウトプットを定期的に行っていけていることは良い傾向だなーと思っています。また自分の書いた記事に『いいね』をもらえることは良い記事をアウトプットできたことになるので嬉しいですね。また自分の書いた記事が溜まっていくことも経験を蓄積できており、自分の自信にもなるのでやる気が出ます。3月以降もこんな形でアウトプットを続けていきたいですね。

振り返り

 上であげた経験を見てみると、自分はアプリ側・インフラ側両面に興味があって、どっちの作業をしている時も一定以上の充実感は感じているように思います。個人的に思うのは自動化の環境づくりや開発者の効率をあげるような業務が自分にとって非常に有意義に感じましたね。ここではCI/CD環境の構築を経験として出しましたが、実際には開発で利用するDev/ST/Prod環境の構築や本番環境でエラー発生時に通知する仕組みなどスクラムチームにおけるインフラ担当を開発をする傍担ってきました。それはもちろんチームや私の周りにいる人たちのおかげでもあると思います。

例えばスクラムチーム、私がその分野に興味があることを察し、メインとしてもその役割を私に任せてくれました。その分アプリ開発の面での遅れはキャッチアップを求めると気軽に答えてくれました。本当に助かるし、感謝の気持ちを忘れずに開発を進めていきたいと思う。

 そろそろ書き疲れてきたのでここらでまとめます。

これから

 そろそろお気づきかと思いますが、私個人としてはよりSREライクに仕事を進めていけたらと思っています。まずは今いる組織・チームの中でSREとして働いていけるよう自分の立ち位置を強固に確立させること。そして今はまだ開発中のサービスなので運用面においての工夫はすくないですが、New RelicやCloudWatchなどの監視ツールの利用や障害発生時の対応方法など、考えていくことは山ほどあるなと感じています。それらを整理していきつつアプリ開発には携わっていきたいですね。それが今いる組織で達成してけるなら、そのような方向に持っていけるなら今後もしばらくは今いる会社でしたいと思います。それが厳しいと感じるのであれば、サービスのリリースを待って次のアクションを検討したいと思います。割と大変ではありますが、今こうやって書いているということはそれなりに楽しんでいるのは確かなんでしょうね。

最後に

柄にもなく振り返りましたが、こうやって今の自分を俯瞰してみるのも悪くないですね。今後も気が向いた時にはこうやって書き残していきたいです。
次は英語で記事書かないとな......、苦し紛れに一文だけ残しておきます。

Thank you for Reading.

この記事が気に入ったらサポートをしてみませんか?