431 Views
July 29, 24
スライド概要
2024年7月26日 Shima Tech Hub#4
アールスリーインスティテュートは、kintoneを中心とした クラウドサービスを活用することで お客様の継続的な業務改善をサポートします。
サービス案件でも SI案件でも Go言語はいいぞ 2024/07/26 Shima Tech Hub #4 アールスリーインスティテュート 西島 www.r3it.com
はじめまして! アールスリーインスティテュート サービスグループ gusukuユニット デベロップメントチーム マネージャー 西島 幸一郎 @k_nishijima #しまてく ハッカーズチャンプルーのなかのひと https://hackers-champloo.org/ www.r3it.com
アールスリーインスティテュート システムの受注開発と 法人向けSaaSの二本立て 創業 社員数 拠点 年商 2000年 41名 大阪 10億 東京 沖縄 みんなの家 www.r3it.com
琉球ゴールデンキングスのパートナーです www.r3it.com
Go使ってますか? 弊社では開発者の好みで使用言語やフレームワークを選ぶので、 完全に西島の好みでGoをあちこちに使っています。 www.r3it.com
色々便利なので Go仲間を増やしたい! そしてすっかりお休み中のOkinawa.goをたまにはやりたいw https://okinawa-go.doorkeeper.jp/ www.r3it.com
Goの特徴 ● マスコットがゆるい🤣 https://go.dev/assets/go-brand-book-v1.9.5.pdf www.r3it.com
Goの特徴 色々あるけど軽く挙げるとすると... ● 静的型付けを行うコンパイル言語 ● 実行速度は十二分に速い ● メモリも管理してくれるので謎挙動はほぼない ● 複数のプラットフォームをサポート www.r3it.com
Goの特徴 ● みんな大好きDockerも Goで書かれてるよ! https://github.com/moby/moby www.r3it.com
Goの具体的な利用事例を紹介 ● SI案件での利用事例 ● SaaS事業での利用事例 via https://github.com/egonelbre/gophers www.r3it.com
SI案件事例:某サービスの一部を受託開発 ● システム間連携のしくみ ● 多数のジョブがREST/一部SOAPを喋り まくっている ● 全部Go(一部Java)で書かれている Goにしたのは単に趣味 ● 最初のコミットを見たら 2016年10月だった... www.r3it.com
環境が色々ある ● 開発環境:Linux(Ubuntu) ● 実行環境:AWS Lambda(Amazon Linux) ● お客さん側の環境:Windows ↑このお客さん側の環境に、管理機能を提供したい www.r3it.com
よし、理屈をこねてみよう ● 特定少数向けの機能 ● 作業者はITリテラシーはちゃんとある ● 公開しておくとセキュリティの担保もしんどいし、 わざわざWebの管理画面いらなくね? ていうかWebで管理画面作るの 面倒くさい!! www.r3it.com
で、どうしたか? ● GoでCLI(コマンドラインインターフェース)を書いて、 Linux上で .exeの実行ファイルをビルドして提供した🎉 ○ ● ● コアの連携システムと同じリポジトリから、 クロスコンパイル出来るの素敵 ちゃんとWindowsで動く(当たり前) 結果をmarkdownで出力するようにしてあるので、 作業履歴がすべて文字で共有される ○ ○ Backlogなどのタスク管理ツールにそのまま貼り付けられる 控えめに言って最高です www.r3it.com
Go気になりました? via https://github.com/egonelbre/gophers www.r3it.com
SaaSの事例:gusuku Customine https://customine.gusuku.io/ サイボウズのkintoneをノーコードでカスタマイズしたり データのバッチ処理・帳票出力機能などを提供する法人向けSaaS メインのWebサービスの周辺には ● ● ● ● ● ● WebSocketしゃべるやつ メール送信 ドキュメント検索エンジン 生成AIとつなぐやつ Slackとつなぐやつ 謎システムと謎につなぐやつ とにかくいっぱいある 挙げたのはだいたいGoで実装 www.r3it.com
これはマイクロサービスアーキテクチャ? ● ● ● このサービスの場合、メインはかなりかっちりしたモノリシックなアー キテクチャ(いわゆる3層構造のWebシステム) その周辺にLambdaで書かれた、 処理の重いもの・外部システム連携など 補助的な機能を提供するものが多数 モノリスなメインシステムに影響を 与えること無く新機能をリリースできる www.r3it.com
AWS LambdaのGoサポートにおける誤解 (?) ● ● ● 2024年7月現在、Go1.x のランタイムサポートは終了し provided.al2 or provided.al2023のランタイムを使え という状態になっています(意訳:普通に使える) 移行作業は少し必要だったけど、 無駄なRPC呼び出しが排除されたと 思えばいいんじゃないかな😓 ファーストクラスランタイムの サポートではなくなっているわけだが、 まぁGoogle発祥の言語なのでw https://aws.amazon.com/jp/blogs/compute/migrating-aws-lambda-functions-fro m-the-go1-x-runtime-to-the-custom-runtime-on-amazon-linux-2/ www.r3it.com
SaaSの事例:gusuku Customine ● ● WebSocketを使っている、 とある機能を実現 初期の実験的コードをTypeScript(実行環境としてはNode.js)で 書いていたけど、めちゃくちゃ遅かったw →でも実現可能なことは分かったので、Goで書いてみた ● ピーク時には500/min以上の同時接続、 4k/min以上のメッセージをやり取りしてるけど 平均処理時間 100msec 以下で超安定稼働、メンテフリー www.r3it.com
というわけでGoはいいぞ ● 沖縄のGo使いの皆様、友達になりましょう🤣 これから触ってみたいでもOK! www.r3it.com
おわり www.r3it.com