今年書いた記事の振り返り、後半戦
株式会社ピー・アール・オーのアドベントカレンダー17日目です!よろしくお願いいたします!
2日に引き続き、2019年の"俺的技術トレンド"を掘り起こしていきます。疾風怒濤の後半戦です。
GCP と GKE
今年の技術エポックとしてもっとも大きいものの一つがGKEでの Kubernetesの使用 でしょう。まさか、実際の案件で Kubernetes の構築するとは思わなかった。
Firebase を使用した案件で仕様(夢)が膨らみ、FunctionsからGCPのPub/Sub、ついにGKEでのApollo-Server、それをデプロイする Spinnaker とこれらをワンストップでデプロイする Terraform とGKE関連で広大な技術領域を勉強させていただきました。ここまでは前回のおさらいです。
さらに、GKE で Elasticsearch の Operator 導入しました。モンスター級のサービス(セキュリティ的にも)なので、Operatorがなければ Elasticsearch なんて自前クラスタでホストするもんじゃないです。しかし、やはり Elastic の名前は伊達じゃない。
とりあえずElasticSearchにデータ入れておけばあとでどう表示したくなってもどうにかなる、どうにでもなる、そんな感じです。マジ、Elastic。
このElasticSeachのOperatorに関しては、問題なくあっさり動いてしまったため、本家のチュートリアル以上に書くことがないので記事にしてません。さすが Elastic。
Aggsでちょっと引っかかるところがありましたが 1 概ね順調でございます。
GCP に限らずですが、深く付き合い始めると色々とアラが見えてくるものでございます。
Cloud FunctionsのGoランタイムのバージョンがしれっと変わっていたり23、Cloud Storage の直リンクはデフォルトではログインしてないと見れなかったり4、FunctionsやGCPを内部IPで通信できるはずのServerless VPS Access が us-central でしか使えなかったり5・・・
GCPはサービス自体のライフサイクルが早いのでそれなりに覚悟決めないと大変ですね。。。
お気に入りのサービスもしれっと非推奨になっているかもしれません・・・
GraphQL と "マイクロサービスアーキテクチャ"
GKE で動かしてみた Apollo Server ですが Cloud Functions 上で直接、実行するということにもチャレンジしてみました6。GraphQL という API のエンドポイントは今後もどうにか活かしていきたいので、GraphQL の開発効率アップのために様々なトライをしてみました。TypeORMの導入7やOpenTracingの導入8などなど。
そして OpenTracing 調査中に出会ったのが、Eclipse MicroProfile とそれを実装する Javaの Microservice 製品の数々です。Quarkus、Helidon、Micronaut などなど。特に Quarkus の開発効率の良さは群を抜いている9と思いますね。
MicroProfile 対応なのでOpenTracing や OpenAPIの対応もバッチリ10です。Configやフォルトトレランスについても試してみたいところですがまだ着手できていないです。。。
この Quarkus は MicroProfile 対応というだけでなくて、GraalVM対応済みでネイティブコンパイル可能という熱いフレームワークでございます。思わず、ネイティブ化の限界に色々チャレンジしてしまいました。PDFで日本語出力に挑戦したり11、Thymeleafテンプレートエンジンを使用したり12。Cloud Run やAzure Container Instances のようにコンテナそのものをサーバレスにしてしまうサービス13が出てきているのでJavaでこの開発効率なのにネイティブの軽量さとパワーを持っているというのは驚くべきことです。
実際にGrafanaなどでメモリ使用量の少なさを目の当たりにすると14、node.jsのコンテナなんて怖くてGKE上にはデプロイできないと思ってしまいます。
Keycloak で SSO
Java のエンタープライズ向けシステムを扱う上で避けて通れないテーマが古くて新しいSSOです。Keycloak + X ということで、OAuth2.0 や OIDC にトライしました。
Quarkus15、Angular16、Concourse CI17、記事にはしておりませんでしたが Concourse-CIとほぼ同じ手順で Grafana の SSO も実施しております。
ここで OIDCやOAuthにどっぷりはまれたので次の山もなんとか超えることができましたね。。。
Azure
今年の技術エポックとしてもっともの大きいものの一つがマイクロソフトのクラウドサービス Azureに初挑戦 ですね。(というか技術的なエポック多かったなぁ。。。)
Quarkus の MongoDB-Panache で本物のMongoDBではなく、CosmosDB に接続してみたり18、先ほどのQuarkusネイティヴコンテナをデプロイしてみたり13、割と順調だったのですが。。。
AD B2C での SSO には骨が折れました。特に設定画面の使い方に苦労しましたね。。。
なんとか、Quarkus(Functions App)とのSSO19、Angular(Blob Storage)でのSSO20に上手くいったので良かったです。
Azureの案件は来年も続くのでしばらくは Azure ネタが尽きないと思います。
その他、言語、ツールなどなど
JavaScript 関連、Typescript 関連の記事は、これらを日常的なツールとしても使っているのでやはりちょこちょこと上げております212223が、Angular + Typescript の案件が続くので来年もぼちぼち上げていくことになるでしょうね。Typescript はもうトレンドではなく個人的にデファクトになってしまいました。
ブロックチェーン関連ではHyperledger Indy24、また Metamask25での開発?に挑戦しております。前半戦の記事でも書きましたが、最近のブロックチェーンは変態最先端のプロジェクトなんで時々はチャレンジが必要ですね。
そして個人的な挑戦といえば、先日、Raspberry Pi 4 が到着しました!!!
勢いだけでポチってしまって周辺機器なんてほぼなんもなかったのに、それでもなんとかSSHでログインできたので感動です26。小さいけどしっかりLinuxのサーバーなんだから、頼もしい限りです。
アドベントカレンダーの締めもラズパイで何かネタがお届けできればいいな、と考えております。
今年も色々ありましたが、というか今も色々とチャレンジ中ですのでまとまり次第、記事にあげていきたいと思います!
とりあえず本日時点の振り返りは以上といたします。
-
【2019年7月版】Elvis は Primitive を返せない。@Elasticsearch, Painless ↩
-
【2019年9月版】Cloud FunctionsでGoをデプロイをする際のエラーメッセージが「go: finding ・・・」だった時の対処方法 ↩
-
【2019年10月版】Cloud Functions + Cloud SQL で TypeGraphQL + Sequelize の Apollo Server を動かす ↩
-
【2019年11月版】Apollo Server の GraphQL API に OpenTracing を入れてみよう ↩
-
【2019年11月版】Quarkus で Hibernate-Panache の REST API 作ってネイティブ化し Jaeger でトレース ↩
-
【2019年11月版】QuarkusでThymeleafのネイティブ化に挑戦!→テンプレートでメソッド呼び出しはちょっと待った! ↩
-
【2019年11月版】Quarkusのネイティブバイナリコンテナ を Azure Container Instances にデプロイ ↩ ↩2
-
【2019年10月版】GraalVMでNative化した Javalin のコンテナをcAdvisorでチェックしてみる ↩
-
【2019年10月版】Quarkus の REST API を KeyCloak で SSO するデモを docker-compose で動かしてみた。 ↩
-
【2019年12月版】Quarkus、Azure Functionsに載せるは天国。AD B2C で OIDC は地獄。 ↩
-
【2019年12月版】Blob Storage の Angular で AD B2C の OIDC はそこそこ問題ない。 ↩