🌅

[API技術選定1] 企画主旨、技術選定概要

2023/06/05に公開

経緯

FEを作ったので、次はAPIを作りたい。理由としては

  • FEがあるから、APIがあれば1サービス作る土台ができる(作るかは別)
  • 今までGoやOracleを触ってきた。今後はわからないのでGo, Oracleあたりで慣れたやり方・いいなと思ったものを参照可能な形で残す

API作成記事まとめ
https://zenn.dev/tofucode/articles/86e37c865d085a

何を作りたいのか?

どうせなので時流に乗ってChatGPTを触りたい。ChatGPT関連で一番簡単に作れる(多少は実用的な)APIということで、ChatGPTと連携するLINE ChatBotを作ろうと思う。
こーゆーのを作りたい
https://page.line.me/295aqhjz

構成案

Alt text

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は?

→ 使った!まとめた!
https://zenn.dev/tofucode/articles/ff6c27d6b3cc6d

一番だるかったのは?

AWS CLIのインストールや設定まわり!
あとセキュリティグループとかHTTPSとか!

GitHubで編集を提案

Discussion