zxkane/openhands-infra

๐Ÿš€ AWS์—์„œ AI ์ฝ”๋”ฉ ์—์ด์ „ํŠธ๋ฅผ ์ž์ฒด ํ˜ธ์ŠคํŒ…ํ•˜์„ธ์š” โ€” ECS Fargate๋กœ ์™„์ „ ์„œ๋ฒ„๋ฆฌ์Šค. ์œ ํœด ๋น„์šฉ ์ œ๋กœ, ๋Œ€ํ™”๋ณ„ ๊ฒฉ๋ฆฌ, Bedrock LLM. CDK๋กœ ๋ช‡ ๋ถ„ ๋งŒ์— ๋ฐฐํฌ.

openhands-infra๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”?

์ด ์Šคํ‚ฌ์€ AWS ECS Fargate๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์™„์ „ ์„œ๋ฒ„๋ฆฌ์Šค ํ™˜๊ฒฝ์—์„œ AI ์ฝ”๋”ฉ ์—์ด์ „ํŠธ(OpenHands)๋ฅผ ์ž์ฒด ํ˜ธ์ŠคํŒ…ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์ฃผ์š” ์ด์ ์œผ๋กœ๋Š” ์œ ํœด ์ƒํƒœ์—์„œ ๋น„์šฉ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š์œผ๋ฉฐ(Zero idle cost), ๊ฐ ๋Œ€ํ™”๊ฐ€ ๊ฒฉ๋ฆฌ๋˜์–ด ๋ณด์•ˆ๊ณผ ์•ˆ์ •์„ฑ์ด ํ–ฅ์ƒ๋˜๊ณ , AWS Bedrock LLM์„ ๊ธฐ๋ณธ ๋ชจ๋ธ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. AWS CDK ์ธํ”„๋ผ๋ฅผ ํ†ตํ•ด ๋ฐฐํฌ๋˜๋ฉฐ, ๋ช‡ ๋ถ„ ์•ˆ์— ์„ค์ •์„ ์™„๋ฃŒํ•  ์ˆ˜ ์žˆ์–ด ๊ฐœ๋ฐœ์ž์™€ DevOps ์—”์ง€๋‹ˆ์–ด์—๊ฒŒ ๋งค์šฐ ์‹ค์šฉ์ ์ž…๋‹ˆ๋‹ค. ์ฃผ๋กœ Claude Code, Cursor, Codex์™€ ๊ฐ™์€ AI ์—์ด์ „ํŠธ ๋„๊ตฌ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ๋˜๋ฉฐ, ์ฝ”๋“œ ๋ฆฌ๋ทฐ, ์ž๋™ํ™”, ํ˜‘์—… ์ฝ”๋”ฉ ๋“ฑ์—์„œ ๊ฐ•๋ ฅํ•œ ์„ฑ๋Šฅ์„ ๋ฐœํœ˜ํ•ฉ๋‹ˆ๋‹ค.

์ง€์› ๋Œ€์ƒ~Claude Code~Codex CLI~Cursor
npx skills add zxkane/openhands-infra

Installed? Explore more ์ฝ”๋”ฉ & ๊ฐœ๋ฐœ skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli ยท View all 6 โ†’

์ฆ๊ฒจ ์‚ฌ์šฉํ•˜๋Š” AI์—๊ฒŒ ๋ฌผ์–ด๋ณด๊ธฐ

์ด ์—์ด์ „ํŠธ ์Šคํ‚ฌ์ด ๋ฏธ๋ฆฌ ๋กœ๋“œ๋œ ์ƒˆ ์ฑ„ํŒ…์„ ์—ฝ๋‹ˆ๋‹ค.

๋ฌธ์„œ

openhands-infra์€(๋Š”) ๋ฌด์—‡์„ ํ•˜๋‚˜์š”?

๐Ÿš€ AWS์—์„œ AI ์ฝ”๋”ฉ ์—์ด์ „ํŠธ๋ฅผ ์ž์ฒด ํ˜ธ์ŠคํŒ…ํ•˜์„ธ์š” โ€” ECS Fargate๋กœ ์™„์ „ ์„œ๋ฒ„๋ฆฌ์Šค. ์œ ํœด ๋น„์šฉ ์ œ๋กœ, ๋Œ€ํ™”๋ณ„ ๊ฒฉ๋ฆฌ, Bedrock LLM. CDK๋กœ ๋ช‡ ๋ถ„ ๋งŒ์— ๋ฐฐํฌ.

๊ฐœ์š”

์ด ํ”„๋กœ์ ํŠธ๋Š” AWS ์ธํ”„๋ผ์—์„œ OpenHands AI ์ฝ”๋”ฉ ์—์ด์ „ํŠธ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ CDK ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ž…๋‹ˆ๋‹ค. ECS Fargate๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์™„์ „ ์„œ๋ฒ„๋ฆฌ์Šค๋กœ ์šด์˜๋˜๋ฉฐ, ์œ ํœด ์ƒํƒœ์—์„œ ๋น„์šฉ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ฃผ์š” ๊ธฐ๋Šฅ

  • ์™„์ „ ์„œ๋ฒ„๋ฆฌ์Šค: ECS Fargate + ALB ์กฐํ•ฉ์œผ๋กœ ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰, ๊ด€๋ฆฌ ๋ถˆํ•„์š”
  • ์œ ํœด ๋น„์šฉ ์ œ๋กœ: ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ๋•Œ๋Š” ๋ฆฌ์†Œ์Šค๊ฐ€ ์ž๋™์œผ๋กœ ์ถ•์†Œ๋˜์–ด ๋น„์šฉ์ด ๋“ค์ง€ ์•Š์Œ
  • ๋Œ€ํ™”๋ณ„ ๊ฒฉ๋ฆฌ: ๊ฐ ์„ธ์…˜์ด ๋…๋ฆฝ์ ์ธ ์ปจํ…Œ์ด๋„ˆ์—์„œ ์‹คํ–‰๋˜์–ด ๋ณด์•ˆ๊ณผ ์•ˆ์ •์„ฑ ํ–ฅ์ƒ
  • Bedrock LLM: AWS Bedrock์„ ๊ธฐ๋ณธ LLM ์ œ๊ณต์ž๋กœ ์‚ฌ์šฉ, ์ถ”๊ฐ€ API ํ‚ค ๋ถˆํ•„์š”
  • ๋น ๋ฅธ ๋ฐฐํฌ: AWS CDK๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ช‡ ๋ถ„ ์•ˆ์— ์ „์ฒด ์ธํ”„๋ผ ๋ฐฐํฌ ๊ฐ€๋Šฅ

์‚ฌ์ „ ์š”๊ตฌ ์‚ฌํ•ญ

  • AWS ๊ณ„์ • ๋ฐ ์ ์ ˆํ•œ IAM ๊ถŒํ•œ
  • AWS CLI ๊ตฌ์„ฑ (aws configure)
  • Node.js 18 ์ด์ƒ
  • AWS CDK CLI ์„ค์น˜ (npm install -g aws-cdk)
  • Docker (๋กœ์ปฌ ํ…Œ์ŠคํŠธ ์‹œ ํ•„์š”)

๋น ๋ฅธ ์‹œ์ž‘

git clone https://github.com/zxkane/openhands-infra.git
cd openhands-infra
npm install
cdk bootstrap
cdk deploy

ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •

cdk.json ๋˜๋Š” .env ํŒŒ์ผ์„ ํ†ตํ•ด ๋‹ค์Œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

๋ณ€์ˆ˜๋ช…์„ค๋ช…๊ธฐ๋ณธ๊ฐ’
OPENHANDS_BEDROCK_MODELBedrock LLM ๋ชจ๋ธ IDanthropic.claude-v2
OPENHANDS_BEDROCK_REGIONBedrock ์„œ๋น„์Šค ๋ฆฌ์ „us-east-1
ECS_CPUFargate ํƒœ์Šคํฌ CPU ํ• ๋‹น1024
ECS_MEMORYFargate ํƒœ์Šคํฌ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น2048

์•„ํ‚คํ…์ฒ˜

  • ALB: Application Load Balancer๋กœ ํŠธ๋ž˜ํ”ฝ ๋ผ์šฐํŒ…
  • ECS Fargate: ์„œ๋ฒ„๋ฆฌ์Šค ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰, ์ž๋™ ์Šค์ผ€์ผ๋ง
  • Bedrock: LLM ์ถ”๋ก  ์—”๋“œํฌ์ธํŠธ (API ํ‚ค ๋ถˆํ•„์š”)
  • CloudWatch: ๋กœ๊น… ๋ฐ ๋ชจ๋‹ˆํ„ฐ๋ง

๋ณด์•ˆ

  • VPC ๋‚ด๋ถ€์—์„œ๋งŒ ํŠธ๋ž˜ํ”ฝ ํ—ˆ์šฉ (์„ ํƒ์ ์œผ๋กœ ํผ๋ธ”๋ฆญ ALB ์„ค์ • ๊ฐ€๋Šฅ)
  • IAM ์—ญํ• ์„ ํ†ตํ•œ ์ตœ์†Œ ๊ถŒํ•œ ๋ถ€์—ฌ
  • Bedrock์€ IAM ์ธ์ฆ ์‚ฌ์šฉ

๋ผ์ด์„ ์Šค

MIT License

๊ด€๋ จ ์Šคํ‚ฌ