ã¡ã¢
ã2025/12/12 远èšã ã¢ããããŒããè¡ããŸããïŒ ãDBã䜿ããã«ããŒã¿ãå ±æããæ©èœãããVPCïŒã°ã«ãŒãåïŒæ©èœããå®è£ ããéçºè£è©±ïŒç¶ç·šïŒãå ¬éããŸããïŒ AWSã®è«æ±ã«ãã³ããªãããæå°ã§ã¹ããŒãã¬ã¹ã貫ããæè¡è§£èª¬èšäºã§ãã
ð ç¶ç·šèšäºïŒAWSã®è«æ±ãæãã®ã§ãDBãªãã§ãããŒã¿å ±æããå®è£ ãã話ïŒãšãReact Flowã®200ãã«ææå£ vs AIã®å¹»èŠïŒ
ã¯ããã«ïŒã€ã³ãããã ããããèšèšã§ããããã«ãªããªããªãïŒ
çªç¶ã§ãããã¿ãªããããã·ã¹ãã èšèšãã®ç·Žç¿ãã©ããã£ãŠãŸããïŒ
ãå€§èŠæš¡ããŒã¿æåã¢ããªã±ãŒã·ã§ã³ãããã·ã¹ãã èšèšã®é¢æ¥è©ŠéšãâŠâŠåèãšåŒã°ããæ¬ã¯ãããããããŸããç§ãèªã¿ãŸãããèªã¿çµãã£ãç¬éã¯ããªããšãªãã匷ããªã£ãæ°ãããããã§ãããã
ã§ãããµãšæããã§ãã ãã§ããã®ç¥èãã©ãã§äœ¿ãã®ïŒã
å人éçºãããããªå€§èŠæš¡ãã©ãã£ãã¯æ¥ãªãããæ¥åã§ãããªããåããŒãããã¢ãŒããã¯ãã£èããŠããªããŠèšãããæ©äŒããããããªãã æ¢åã³ãŒãã®æ¹ä¿®ïŒAs-IsïŒã¯ãã£ãŠããçœçŽããã®èšèšïŒTo-BeïŒããããã£ã³ã¹ã£ãŠãå®ã¯ãã¡ããã¡ãã¬ã¢ãããªãã§ããïŒ
ãç·Žç¿å Žæããªããªããäœããããªãã
ãããªå¢ãã ãã§ãAIãçžæã«èŠä»¶å®çŸ©ããèšèšãè©äŸ¡ãŸã§ãã¬ãããªããåãããã©ãããã©ãŒã ãéçºããŸãããRustãAWSãææ¢ãç¶æ ããã®ã¹ã¿ãŒãã§ãããããªããšã圢ã«ãªã£ãã®ã§ããã®éçºã®è£åŽãå°ãèªãããŠãã ããã
äœã£ããã®ïŒArchitecture Sandbox
ååã¯ãã®ãŸãŸããArchitecture Sandboxãã äžèšã§ãããšããããã©ããã顧客ïŒAIïŒãšæŠããªãããã·ã¹ãã æ§æå³ãæããŠãAIäžåžã«æ¡ç¹ããŠãããã¢ããªãã§ãã
ãã å³ãæãã ãã®ããŒã«ãããããŸãããã亀æžããšãè©äŸ¡ããããã®ãæå€§ã®ããœã§ãã
äž»ãªæ©èœã¯ä»¥äžã®5ã€ã§ãã
- ã·ããªãªéžæç»é¢
- ã«ã¹ã¿ã ã·ããªãªå®çŸ©ç»é¢
- ãã£ããç»é¢
- ã·ã¹ãã èšèšç»é¢
- è©äŸ¡çµæç»é¢
ããããã®æ©èœã«ã€ããŠç޹ä»ããŸãã
ã·ããªãªéžæç»é¢

ã¢ããªã®å ¥ãå£ã§ããããªã»ããããããããã©ã«ãã·ããªãªãããèªåã§èšå®ãäœããã«ã¹ã¿ã ã·ããªãªããéžæã§ããŸãã
-
瀟å 倿 管çã·ã¹ãã ïŒåçŽïŒ: 瀟å¡50åèŠæš¡ãITã«è©³ãããªãæ åœè ã«å¯Ÿããå ·äœäŸãåºããªãããã¢ãªã³ã°ããç·Žç¿ãã§ããŸãã
-
ç»åæçš¿SNSïŒäžçŽïŒ: 次äžä»£ã®äžçèŠæš¡SNSãã¹ã±ãŒã©ããªãã£ãé«å¯çšæ§ãæ±ããããè€éãªèšèšèª²é¡ã§ãã
ã«ã¹ã¿ã ã·ããªãªå®çŸ©ç»é¢

ãªãªãžãã«ã®ããŒãã§èšèšç·Žç¿ãè¡ãããå Žåã¯ãã¡ãã䜿çšããŸãã ã·ã¹ãã ã®æŠèŠã ãã§ãªãããèŠæš¡æïŒã¢ã¯ã»ã¹æ°ãªã©ïŒãããäŒè©±çžæïŒé¡§å®¢ïŒã®äººæ Œããå®çŸ©ã§ããŸãã
ç¹ã«ãäŒè©±çžæã®äººæ Œãã¯äœéšã倧ããå€ããŸããæ°é£ããçžæã§ããã°èŠä»¶ãåŒãåºãã®ãé£ãããªããèŠæš¡æã倧ãããã°æ±ããããéæ©èœèŠä»¶ïŒå¯çšæ§ãªã©ïŒã®ã¬ãã«ãè·³ãäžãããŸãã
ãã£ããç»é¢

ãããæ¬ã¢ããªã®ãã ããã®äžã€ãã亀æžãã®ãã§ãŒãºã§ãã
ãããªãèšèšã«å ¥ãã®ã§ã¯ãªããAIïŒé¡§å®¢ïŒãšãã£ãããããŠèŠä»¶ãè©°ããŠãããŸãã AIã¯é ããããè£èŠä»¶ããæã£ãŠããããã¡ããããäºç®æã¯ïŒããæ³å®ãŠãŒã¶ãŒæ°ã¯ïŒããšè³ªåããªãéããéèŠãªæ å ±ãæããŠãããŸãããå®ååæ§ããã¢ãªã³ã°èœåã詊ãããŸãã
åŸãããæ å ±ã¯å³åŽã®ãèŠä»¶ã¡ã¢ãã«èšé²ããèšèšæã®æéãšããŸãã
ã·ã¹ãã èšèšç»é¢

React Flowãçšãããã©ãã°ïŒããããUIã§èšèšãè¡ããŸãã ãµã€ãããŒããã³ã³ããŒãã³ãïŒLB, Web Server, DB, Cacheãªã©ïŒãé 眮ããæ¥ç¶ããŠãããŸãã
çŸåšã¯åºæ¬çãªæ§æã®ã¿ã§ãããä»åŸã¯Multi-AZãDBã¬ããªã±ãŒã·ã§ã³ãªã©ã衚çŸã§ããããã«æ¡åŒµäºå®ã§ããèšèšãå®äºãããããã¿ã³äžã€ã§AIã¢ãŒããã¯ãã«ããè©äŸ¡ãå§ãŸããŸãã
è©äŸ¡çµæç»é¢

äœæããå³ãšèŠä»¶å®çŸ©ã®å 容ãå ã«ãAIãã¹ã³ã¢ãªã³ã°ãšãã£ãŒãããã¯ãè¡ããŸãã ãå¯çšæ§ãäœãããã³ã¹ããããããããŠããããšãã£ãå ·äœçãªææã«å ããã¬ãŒããŒãã£ãŒãã§ç·åè©äŸ¡ãå¯èŠåããŸããããã«ããã客芳çãªèŠç¹ã§èšèšãèŠçŽãããšãã§ããŸãã
æè¡éžå®
ããã£ããå人éçºãããã ãããåŠç¿ãããæè¡ãå šéšè©°ã蟌ããïŒããšããæ¬²åŒµãã»ããã§æ§æããŸããã
- Backend: Rust(Axum)
- åŠç¿äžã®Rustã䜿çšãåå®å šæ§ãšããã©ãŒãã³ã¹ãã³ã³ãããšã®èŠªåæ§ãéèŠãïŒGoã§ãè¯ãã£ããåŠç¿äžã®Rustã䜿çšããŠã¿ãŸããïŒ
- Frontend: React + React Flow
- ããŒãããŒã¹ã®UIæ§ç¯ã®ããæ¡çšã
- AI: Google Gemini API(Gemini 2.5 Flash)
- é«éãªã¬ã¹ãã³ã¹ãšå®äŸ¡ãªã³ã¹ãã§ããªã¢ã«ã¿ã€ã ãªå¯Ÿè©±ãšè©äŸ¡ãå®çŸããŸããã
- Infrastructure: AWS App Runner + S3 + Cloud Front
- ã³ã³ããå®è¡ç°å¢ãšããŠApp Runnerãæ¡çšãããã³ããšã³ãã¯S3ãšClound Frontãšããçéã®æ§æã§æ§ç¯ããŠã¿ãŸããã
ãã ãã£ããšãã
1. ãããªãã亀æžãããå§ãŸã
ãã®ã¢ããªããããªãèšèšãããŠãããŸããããŸãã¯ã顧客ïŒAIïŒããžã®ãã¢ãªã³ã°ããã§ãã
äŸãã°ã瀟å 倿 ã·ã¹ãã ãäœãããããšããã·ããªãªã çžæã¯ITã«çãäººäºæ åœè ïŒãšããèšå®ã®AIïŒã§ãããããæãã«ãé¡ãããŸããã¿ãããªãã¯ããšããããšããèšããªãã£ããããŸãã
ã瀟å¡èŠæš¡ã¯ïŒã
ãäºç®æã¯ïŒã
ãæ9æã«ã¢ã¯ã»ã¹éäžããŸããïŒã
ãã¡ãããé£ãæ°å³ã«è³ªåããªããšãéèŠãª**éæ©èœèŠä»¶ïŒé ããã©ã¡ãŒã¿ïŒ**ãåºãŠããŸããã ãã®ãèŠä»¶ãåŒãåºãæ³¥èãããããçŸå®ã®èšèšããã»ã¹ã£ãœããŠçããŸãããïŒ
2. ããã¯ãèŠç¹ãã§èšèšãã
èŠä»¶ãåºãŸã£ãããReact Flow補ã®ãã£ã³ãã¹ã§èšèšã§ãã ããã§ã¯ãRedisãããKafkaããšãã£ãå ·äœçãªè£œååã§ã¯ãªãããããŠãCacheãããQueueããšãã£ãã圹å²ïŒã³ã³ããŒãã³ãïŒãã§é 眮ããŸãã
ãããŒã«èªäœã®èšå®ãã«æéãæº¶ããã®ã§ã¯ãªãããã©ãã«äœã眮ãã¹ããïŒããšããã¢ãŒããã¯ãã£ã®æææ±ºå®ã ãã«éäžãããããã§ãã
3. AIäžåžã«ããã容赊ãªãè©äŸ¡ã
èšèšãçµãããšãè£ã§Gemini 2.5 Flashãèµ°ãåºããããªãã®èšèšå³ãæ¡ç¹ããŸãã ãããçµæ§å³ãããã§ãã
ããã®èŠæš¡ã§NoSQLã¯ãªãŒããŒã¹ããã¯ã§ã¯ïŒããSPOFïŒåäžé害ç¹ïŒããããŸããã âŠâŠããã®é³ãåºãªãææãé£ãã§ããŸããã§ãããããããã誰ãã«ã¬ãã¥ãŒãããã£ãŠãç¬åŠã ãšäžçªé£ããäœéšã§ãããã
éçºã§ããã£ããšãã
æ£çŽãã¢ããªã®ããžãã¯ãæžããŠããæéãããã€ã³ãã©ãšDockerãšæŠã£ãŠããæéã®ã»ããé·ãã£ãæ°ãããŸãã
1. AWSã®è«æ±ãæãïŒãè±RDSãã®æ±ºæ
å人éçºè ã«ãšã£ãŠãAWSã®RDSïŒãªã¬ãŒã·ã§ãã«ããŒã¿ããŒã¹ïŒã¯é«å¶ºã®è±ã§ãã ãææ°ååãâŠâŠå匷代ãšã¯ãããçããªâŠâŠã
ããã§æ±ºæããŸãããããããDBãæšãŠãããã
ä»åã®ã¢ããªã¯ãèšèšã®ç·Žç¿ããã§ããã°ãããããŒã¿ã®æ°žç¶åã¯ïŒäžæŠïŒè«ŠããŠãå®å šã¹ããŒãã¬ã¹æ§æã«æ¯ãåããŸããã ããŒã¿ã¯ããã³ããšã³ãã®ã¡ã¢ãªã«æãããŠãè©äŸ¡æã¯ãã®JSONãAIã«æããã ãããããã§App Runnerã®ã³ã³ãã代ã ãã§æžãè¶ äœã³ã¹ãéçšãå®çŸããŸããã ïŒãéã貯ãŸã£ããDynamoDBãããã§æ°žç¶åããŸãâŠâŠïŒïŒ
2. Mac(ARM) vs AWS(AMD) ã®ä»çŸ©ãªãæŠã
éçºã¯M4 Mac miniïŒARM64ïŒãã§ãæ¬çªã®App Runnerã¯x86_64ïŒAMD64ïŒã ããŒã«ã«ã§ã¯ãµã¯ãµã¯åãã®ã«ããããã€ããç¬éã«ã³ã³ãããæ»ã¬ããã°ãèŠãŠãããããããªãã
åå ã¯OpenSSLã§ãããã¯ãã¹ã³ã³ãã€ã«ã®çœ ã«ãŸããŸãšããããæ·±å€ã«äžäººã§é ãæ±ããŸããã çµå±ãOpenSSLãžã®äŸåãæã¡åãããã«ãRuståŽã®HTTPã¯ã©ã€ã¢ã³ãã®èšå®ã§ rustls ã䜿ãããã«å€æŽããŠè§£æ±ºã ãã³ã³ãããªãã©ãã§ãåãããªããŠå¹»æ³ã ãšæãç¥ããŸãããããå匷ã«ãªããŸããã
ãããã«
RustãReactãAWSããäžæ°ã«ãã£ãããã§è³ã®ãã£ãã·ãã£ã¯éççªç ŽããŸããããæºè¶³åºŠã¯ãã¡ããã¡ãé«ãã§ãã
ãªã«ããããèªåãæ¬²ããã£ããã®ããåããŠããç»é¢ãèŠãã®ã¯æé«ã§ãã æžç±ã§èªãã ç¥èããã³ãŒããšã€ã³ãã©ãéããŠè¡èã«ãªã£ãæèŠããããŸãã
ãŸã ãèªèšŒæ©èœããªãããDBããªãããURLãåºå®åãããŠããªãããªã©ããã³ãã©ããã¯æºèŒã§ããããšããããã¡ã€ã³ã®æ©èœã§ãããAIãšèšèšããã«ãã¯ã§ããããã«ãªããŸããã
ããããã£ãããGitHubèŠããŠã¿ãŠãã ããããããŠãããããã°Starãããã ãããšãç§ã®ã¢ãããŒã·ã§ã³ãšAWS代ã®è¶³ãïŒæ°æã¡çã«ïŒã«ãªããŸãïŒ
GitHub: ãªããžããª
App: Architecture Sandbox