見出し画像

【Slalom1周年】新卒一年目の振り返り(AWSの学習についても書いてるよ)

こんにちは!😊
Slalomでエンジニアをしている@new_marty7です!
Slalomで働き始めてから1年が経っていたので1年を振り返っていこうと思います。

入社の経緯

Slalomに入社したのはLinkedInでリクルーターさんに声をかけてもらったからで、最初はコンサルの会社って聞いてメッセージを無視しようと思っていました笑。でも話を聞いてみたら面白そうな会社だし、給料良さそうだし、面接してみたら、話してるうちにみんないい人だしここええやん!ってなって入社を決意しました。メッセージ無視してなくて本当に良かったです笑。Slalomに入る人って大体リクルーターと話すまで会社の存在自体知らなかったっていう人が多いです笑。
1年前はオンラインでASUに通いながら24卒として正社員の仕事を探していましたが、Slalomからオファーをもらい、ASUに通いながらでもいいよとのことだったのでなら今すぐ入ってやれ!と思い、23年4月に1年繰り越しで正社員として働き始めました。当時の最年少で入社して今でも新卒は唯一だと思います✌️
自分が入ったのがCloud Residency Programという、いわばクラウドの研修プログラムの一環です。これはどんな研修かというと、今クラウドを扱えるエンジニアが人手不足なので転職マーケットでもクラウドの人材を確保するのが難しい状況です。なのでソフトウェアエンジニアとして経験のあるエンジニアにAWSの経験を積ませてクラウドにも強いエンジニアになってもらおう!という会社の投資的なプログラムです。自分含めて6人のエンジニアが日本初のCloud Residencyとして研修を受けるために入社しました。Googleとかでもやってますね。

そもそもSlalomってなんの会社?

ほとんどの方はSlalomがなんの会社か知らないと思います。自分も入社して3ヶ月くらいはなんの会社か分かってなかったです笑。同じくらいの時期に入社した同僚の方も記事を書いているので気になる方は読んでみてください!(普通に去年レイオフしてましたけどね笑)
一応ITコンサルの会社ですが、エンジニア部隊は簡単にいうとSIerみたいなことをしています。ただ、ほかのITコンサルやSIerと違うのは、アジャイルに重きを置いていること、作れば終わりではなくてそのプロセスにもこだわっていることだと感じています。一緒に仕事をしたクライアントさんからの満足度はかなり高いと聞いています。
Big Techともパートナーを結んでいたり、かなりテクノロジーにおいては信頼を得ている会社だと思います。2023年にはAWSのGlobal SI Partner of the Yearにも選ばれていました。

Cloud Residencyとしてやったこと

じゃあCloud Residencyって何するん?って話です。簡単にいうと、メンターさんから課題が与えられるので2週間のスプリントでWebアプリを開発したり、AWSでインフラを構築したりというのを5スプリント行います。なので合計で10週間ひたすらAWSを触りまくるという研修ですね。それに加えて資格も取ったりするので約4ヶ月はずっとAWSを叩き込まれるという感じでした。今思うと4ヶ月もやったっけ?っと思うくらい楽しくて充実した期間でした☺️今回はそれぞれのスプリントで何をしたかを紹介しようと思います。AWS初心者で触ってみたい方は参考にしてみてください!
※Sprint 1はCloud Practitionerの資格を取るスプリントだったのでsprint 2からになります。
※Sprint 7でSolutions Architect Associateの資格を取ることを目標にしています。なので勉強のために別にいらんだろっていうサービスも触ってたりします。
※6人を2チームに分けて3人1チームで開発しました。

Sprint 2

このスプリントで作るものは次のとおりです。(Route53は実際にはやってません。)

Sprint 2 Architecture Diagram

簡単なバックエンドアプリケーションを作り(Hello World!を返すだけのAPI)、それをEC2に置いてアクセスできるようにするといったものです。さらに踏み台サーバーから管理できるようにして、AWSのセキュリティ系のサービスで監視できるようにするというところまでやりました。さらに最後にはクライアントに提案することを想定してAWS Pricing Calculatorでコストの見積もりまでをしました。
勉強したサービスや概念は次のとおりです

  • VPC

    • Subnet

    • Private subnetとPublic subnetの違い

    • NAT gateway

    • Internet gateway

  • EC2

    • Bastion server

    • Security group

    • Auto scaling group

  • Application load balancer

    • ALBとNLBの違い

  • Region/Availability zone

  • CloudWatch

  • CloudTrail

  • GuardDuty

  • Inspector

  • SecurityHub

  • Route53

  • Shield

  • WAF

  • Apache

最初のスプリントでVPCなど基礎的なサービスも勉強しなきゃいけないこともあってかなり盛り沢山なスプリントになりました。ただ、スタートとしてはちょうどいい内容でした。初心者はとりあえずVPCの中が自分で構築できるようになればいいスタートが切れるんじゃないでしょうか!

Sprint 3

このスプリントではアプリケーションがフルスタックに進化します。前のスプリントでは簡単なAPIだったのに対してフロントエンドはReactで、バックエンドはNode.jsでちゃんと動くアプリケーションを構築します。作るものは次のとおりです。

Sprint 3 Architecture Diagram

前のスプリントから変わったこととしては

  • 踏み台サーバーをやめてVPC endpointを設定してSession managerからサーバーを管理している

  • フロントエンドをホストするためのCloudFrontとS3バケットが追加されている

  • データベース用のRDSが増えている

くらいです。このスプリントはアプリケーションの開発に時間をかけたのでAWSはそこまで変化はないです。(実際にはElastic Beanstalkを使いましたが、今後Beanstalkはあんまり使われないと思うので省略しています。)
学んだこととしては

  • Session manager

  • VPC endpoint

  • CloudFront

  • S3

  • RDS

です。特に2週間という期限がなければ最初からこっちを構築しちゃってみてもいいかもしれませんね。
ちなみにこのスプリントで作ったアプリは保険会社の社内向けの請求提出プロセスを管理するためのアプリという想定です。

Sprint 3 Wireframe

簡単にいうとUIがあってCRUD処理のあるアプリです笑。

Sprint 4

このスプリントから作るアプリが変わります。そしてSprint 6まで使います。作るWebアプリはInstagramみたいに画像をシェアできるSNSです。

Sprint 4 Wireframe

S3を使うために画像を扱うようになった、Cognito使うためにSNSになったっていう感じですね。
インフラはというとサーバーレスになります。

Sprint 4 Architecture Diagram

EC2からLambda+API gatewayに変更になります。そして、データベースがRDSからDynamo DBになっています。あとは先述したとおりS3とCognitoが追加されましたがそれくらいです。学んだこととしては次のとおりです。

  • Lambda

    • サーバーレス

  • Dynamo DB

    • NoSQL

  • S3

    • Presigned URL

  • Cognito

    • AWS Amplify(フロントエンド)

  • API gateway

    • Lambdaとの連携

    • Cognitoを使った認証

このスプリントもアプリ開発がメインだったので新しいサービスは少なめです。ただ、サーバーレスという概念を新しく取り入れたのでかなり新鮮なスプリントでした。API gatewayの設定が難しくて一生CORSのエラーが出てチームで発狂しそうになったのを覚えています、、笑。

Sprint 5

Sprint 5は前回のコードを引き継いでコンテナ化します。さらにこれまでは手動でサービスを立ち上げていたのをTerraformを使ってIaC化します。

Sprint 5 Architecture Diagram

新しく学んだことは次のとおりです。

  • Terraform

  • Docker

    • コンテナ

  • ECS

    • Fargate

  • ECR

このスプリントのメインはTerraformだったのでコンテナ化は正直あんまりまだわかっていません。ECSの設定とかもDokcerに詳しいチームメイトに教えてもらいながらやりました。なので初心者の方はECSではなくて、EC2かLambdaをIaC化するところから始めてみた方がいいかもしれません!

Sprint 6

Sprint 6ので学ぶことはCI/CDです。

Sprint 6 Architecture Diagram

sprint 4の時のサーバーレスのアーキテクチャに戻ります。このアーキテクチャのCI/CDを実装します(Terraformも含めてです!)。今回はAWSのCode兄弟ではなく、GithubのWebhookとJenkinsを使って実装しました。Githubのmainブランチにpushがあったら自動でデプロイされるという仕組みを作ります。
学んだこととしては

  • CI/CD

    • フロントエンド、バックエンドのビルドブロセス

    • Terraform

  • Jenkins

    • EC2のMaster nodeとWorker Node

    • Pipeline Syntax

このスプリントはAWSのサービスというより、CI/CDとJenkinsがメインでした。簡単なCI/CDパイプラインなら2週間もあれば作れるのでまだ作ったことないという方は一度作ってみるといいと思います。思ったより簡単ですよ!

初めてのプロジェクト!

さて、ここまでは研修の内容を話してきました。研修が終わるとクライアントプロジェクトに配属されることになります。自分は運良くすぐにプロジェクトに配属されました。そのプロジェクトがどんな感じだったか簡単にシェアできればと思います。
配属されたのはReact+Node.js(Express)で画像をシェアするWebアプリケーションを作るというプロジェクトでした。Google Photoをイメージしてもらえればそんな感じのアプリです。Lambdaを使ったサーバーレスアーキテクチャで、画像を扱うし、Cognitoでユーザーを管理するというまさにCloud Residencyで勉強した内容そのままでした。
チームはSolution Owner(PMみたいなポジション)1人、Solution Architect 1人、Designer 1人、Quality Engineer 1人、Software Engineer 2人、でした。自分はSoftware Engineerのうちの1人です。新卒で初めてのプロジェクトでエンジニア2人で大丈夫か?と思われるかもしれませんが、全然大丈夫でした!足を引っ張るどころかチームをリードできたと胸を張って言えます。インターン時代から経験のある得意なスタックだったのもありますが、これまでのアジャイル開発の経験も活きて、チームもとてもいい雰囲気で開発できました。管理者用のページをゼロから作ることになったのですが、インターン時代に開発していた経験があることから自分に開発を一任してもらえました。チームをリードして開発するのはプレッシャーもありましたが、無事に期限内に完成まで行けたどころか、間に合わなそうだなと思っていた機能まで終わらせることができ、初めてのプロジェクトは大成功に終わりました。(クライアントさんもとても喜んでくれていました☺️)こんな大役を自分を信じて任せてくれて好きなようにやらせてくれたチームには感謝しかありません!

達成したこと

これまでに紹介したこと以外でこの一年で達成できたことを紹介します。
この一年で自分は4つのクラウドの資格を取りました。

  • Azure AZ 900

  • AWS Cloud Practitioner

  • AWS SAA

  • AWS DVA

資格を持っていればクラウドが使える!という証明にはなりませんが、自分がCloud Residencyで学んだことがちゃんと身についていたということになるので自信にはつながりました!
またこうしてNoteでも発信をはじめれました。まだ記事は3本目ですが、これからもっと発信していければと思います。そんなん誰でも知ってるわ!っていう記事じゃなくて読んで何か学びのある記事を書くことを心がけているので頻度は多くはないかもですが、自分のペースでmeaningfulな記事を発信できればと思います。
社内ではこいつにフロントエンドを任せても大丈夫という信頼を得れたと思います。Cloud Residencyの時もプロジェクトに入った時も積極的にフロントエンドについてチームに貢献していたのでそこを評価してもらえました。

振り返り・今後の目標

今年一年はとても学びの多い一年になり、新卒1年目とは思えないほどいろんなことも任されたりして、とても充実した1年になりました。
ただ悔いが残るのが、AWS Jr.Championになれなかったことです。
今後やりたいことの一覧です。

  • AWSの資格をもっと取りたい

  • Securityの分野をもっと勉強したい。SSCPを取りたい。

  • AWSの技術的なことをもっと発信したい

  • キャリアについてももっと発信したい

  • AWS Jr.Championリベンジ

  • 自分でアプリをリリース

  • 新しい言語の勉強(Java or Go)

  • ASU卒業

ここまでよんくれてありがとうございました!参考になれば幸いです。質問あればいつでもDMで受け付けてます👌
ぜひTwitterとNoteのフォローお願いします!😊

この記事が参加している募集

振り返りnote

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