[API技術選定1] 企画主旨、技術選定概要
経緯
FEを作ったので、次はAPIを作りたい。理由としては
- FEがあるから、APIがあれば1サービス作る土台ができる(作るかは別)
- 今までGoやOracleを触ってきた。今後はわからないのでGo, Oracleあたりで慣れたやり方・いいなと思ったものを参照可能な形で残す
API作成記事まとめ
何を作りたいのか?
どうせなので時流に乗ってChatGPTを触りたい。ChatGPT関連で一番簡単に作れる(多少は実用的な)APIということで、ChatGPTと連携するLINE ChatBotを作ろうと思う。
こーゆーのを作りたい
構成案
gin https://github.com/gin-gonic/gin
line API https://developers.line.biz/ja/services/messaging-api/
sjim/go-ora https://github.com/sijms/go-ora
open AI API https://openai.com/blog/openai-api
Amazon ECS https://aws.amazon.com/jp/ecs/
Amazon RDS https://aws.amazon.com/jp/free/database/
気をつけたいこと
- 前職の開発管理やドキュメンテーションの方法を模倣し、できるだけ過去開発や修正の追跡性の高いシステム・運用にする(自分が忘れっぽいから)
- DDDで重要な箇所とそれ以外の区別をつけコードを簡潔にする
- CI/CDをフル活用し可能な限り手間少なく開発する
費用
作成中
技術選定
ECS? EC2? EKS?
→ ECS使います!!EKSが7000円/月だがECSが0円なので!!
EC2よりはdockerやkubeを使いたかった。
AIでChatbot作るのにDBいらなくない?
→ いる!記憶量必要!開発予定!
なぜOracleか?MySQLではなく?FireDBとかではなく?
今までOracleを使ってきた経験値を忘れないため。それ以上の目的はない。
ECS?RDB?値段が高くない?
高い。サーバも高いが、特にDBが高い。合計だと1ヶ月数千円、下手したら1万円行くかもしれない。実は前からDBやサーバの値段とサービス比較をしていたが、結局Oracleとか使うならこのくらいかかるし、使わない安いけど勉強にならずあまり意味がないような。かなり無数にあって、比較する時間もかかるので、今回はいったん値段は許容ということでいく。まぁ、ジム行くと思って・・・作って微妙だったら消せばいいし・・・。
FireDBとかは安いのに、OracleかMySQLが使えるサーバってなんでこうも高いんだ。
なぜGin?Echoではなく?
かつて自分でGoの環境を作った時はまだ覇権Frameworkがなく、作って利用するうちにEchoというFrameworkが覇権っぽくなってきて、ずっとEcho使えばよかったって言ってきたけど、今はもうGinの方が利用者が多いようなのでGinにする。
参考 https://wiblok.com/go/go_framework_2022/
なぜjsim/go-oraか?なぜmattn/go-oci8を裏切ったのか?
ずっとgo-oci8を使っていたが以下の理由でgo-oraに乗り換える。
- Oracle Instant Clientが不要
- 最近まで更新されてる
goの環境を何度も作ったし何人かのPCに入れる支援をしたが、Goの環境を構築するとき一番辛いのがOracle Instant Clientを入れる時なので、今回利用しないgo-oraを使う(結局入れることになりそうだけど)
ごめんねmattn。ありがとうmattn。
参考 https://qiita.com/y-yamagata/items/5cd3f6f91b595cd7180f
mattn https://github.com/mattn/go-oci8
Gormとかは?
Oracle操作は基本的にSQLを書いてRead Writeをするつもりなので使わない予定。
Dockerは?
→ 使った!まとめた!
一番だるかったのは?
AWS CLIのインストールや設定まわり!
あとセキュリティグループとかHTTPSとか!
Discussion