くるのプログラミング記録

プログラミングの感想とか解説とか。

業務2年目終わりメモ。

2年目が終わった。
webエンジニアになれているかというと......。
まあでも2年もあると自分のコンポーネントでわからないところほとんどないし仕事自体はやりやすいよね、って。



以下2年目までの技術スタック。



DB・データストア

cassandraはかなり触った。分かってない人が作った設計の負債のデカさがrdbよりやばくなると感じた。こわいこわい。
memcached, solrは殆どエアプ。一人で運用してって言われたら多分わからん。
後よくわからんnfsを業務で触っていた。今も謎のまま。

elastic search, oracleあたりを触ってみたいなと思っている。
あとdbとは違うけどkafkaもpulsarも触ったこと無いの結構危機感がある。3年目終わるときまでにはなんとか......。いやmqなくても済む設計が多いような良くないような......。
dbはかなり苦しんだ2年だった。busy100%で張り付いて死ぬみたいな経験はもう二度と味わいたくない。



言語

言語を並べるの不毛感あるね。
goは業務ですぐ書けって言われたら全然無理。
現状バックエンド書くならjavaが一番かなあという気持ち。
c++も今競プロしか使ってないからかなり苦しいかも。
bashを相対的に一番学んだ気がする。



フレームワーク
  • Spring Boot
  • Spock
  • Junit
  • Laravel
  • Fuel
  • Symfony
  • Next
  • React
  • Vue
  • ReactNative

バックエンドは現状Spring Boot一択みたいな気持ちがある。数年後には価値観変わってるのかな。
型のない言語を新規で使う意味がマジで感じれてないので(極端かも)、Railsとかやることはこの先もなさそう。
Spock, Symfonyあたりはフレームワークなのかはよくわからんけど、とりあえずここに入れた。
テストはJunitよりはgroovy使ってSpockで書くほうがいいかなって現状思っている。
フロントは業務でモダンなSPA使ったこと無いので全然わからん。
趣味だとnextが結構良いかなと感じている。
スマホアプリもふわっと触っただけ、絶対業務じゃ無理。
iosも泥も一回ずつ軽いものを作っただけ。




CI/CD
  • screwdriver
  • chef
  • ansible
  • code build / code deploy / code pipeline
  • github actions
  • jenkins
  • concourse

どれも使ってるだけなので、スタックに入れていいか微妙感。
terraform使ったこと無いけど、やばいのでどっかでやんないとなあ。
chefは出来ることなら触りたくない。



コンテナ・インスタンス
  • OpenStack
  • ec2
  • docker
  • ECS
  • pivotal cloud foundry

割と実機か普通のインスタンス稼働の運用が多かったのでコンテナ経験はめちゃめちゃ浅い。
k8sとか触ったことない。
かと言ってOpenStackも運用してるわけじゃなくて使ってるだけ、ユーザー側最高!
現状ecsが一番使いやすい感あるね。pcfもめちゃめちゃ便利だけど、運用してくれる人がいるなら......って感じがある。



ネットワーク

Kongはラッパー使ってるだけなのでエアプもエアプ。ネットワークは未だに黒魔術に感じている。マスタリングTCP/IPを読まないといけないのかな。
業務だと設定ポチポチしてただけが多い。vipつくってlbかましてAレコ張って、そこからエンドポイントキャッシュ効いた別のドメイン張って、ぐらいのシンプルなことまではできて、後はわかんないね。
趣味だと完全にAWSをぽちぽちするだけ。


ドキュメント
  • swagger
  • plant uml

コンフルで済ませちゃうことが多かった。
まあspring foxでコードから自動生成するswaggerは好き。逆に普通に書くswaggerはなんかコストと維持を考えると見合うのかなって気持ちが(人間はドキュメントを更新しないので)



ほか
  • DDD

 哲学な感じもするけど、やはり共通の文脈というのは大事で......。

 負荷試験もこの2年でめっちゃやった。未だにベストプラクティスはわからず。難しいね。

  • pt-online-schema-change

 クソ便利ツールなのだが、ちょっと怖いときがある。これもかなり多用した。

  • S3

 ストレージこれ以外使ったことない。静的フロントもこれで動くのいいよねえ。

  • prometheus

 ドレインするためにactuatorに使ってただけ。一回ホスティングしないとなあ。

  • splunk

 これも使ってただけなので、詳しいかというと......。

あとはgithubとか、流石に書く必要ないやつぐらい?たぶん。masterにpushしないぐらいにはgitが使えます!

なんかまだまだあると思うけど、思い出せるのはこれぐらい。









結局インフラ周りはひたすら使うだけだったので、詳しいことは分からんままなんだろうなあという感触が強い。


セキュリティ周りも割と社内システムに乗りまくってたので経験薄いなって感じはある。
クレデンシャルの扱いとかはまあ最低限として、例えばsidecar的な設計の認可システムを趣味開発に入れるとかやるのはちょっと腰が重い感じがある......。


パソコンのことはなにもわからないままだった。ubuntu > mac > windowsぐらいの好みがあるだけ。
osがなんで動いてるのかわからないまま、雰囲気でプログラミングをしている......。
vimも全然身につかなかった。シェルもawkで全部誤魔化している。
このへんできるとエンジニアっぽいよね。


graphQLとかgrpcも全然使わなかったな。まだxmlがはびこっている感じがする。フルでjsonになってるだけでかなりマシだなみたいなイメージがあるね......。


フロントのデザイン的なことはマジで業務でもやんなかなったので何もわからないまま。bootstrapが使えます!!!!


読んだ技術書。うーんまともに読み切ったものは少ない、積みがち......。
github.com







技術スタックや知識よりは、それ以外の考え方とかのほうがエンジニアリングする上では大事かもって気持ちになりつつはある。
まあでも手を動かせないぐらい知らないのはダサいみたいな価値観もあるので、知識は増やしていきたい。






この2年でバックエンドをもっとやっていきたいなという気持ちが固まった。ふわっとはしてるけど。
技術選定を自信持ってやれるようになりたいね。


数年後見返したときにこの頃は知識浅いなと思えますように。