Post

๐Ÿ’ญ์ตœ์ข… ํ”„๋กœ์ ํŠธ ๋ฉด์ ‘ ์ค€๋น„

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

1

  • Jenkins
    • ๊ฐœ๋ฐœ์ž๊ฐ€ ์ฝ”๋“œ๋ฅผ pushํ•˜๋ฉด, ์›นํ›…(webhook)์„ ํ†ตํ•ด ์ž๋™์œผ๋กœ Jenkins ๋นŒ๋“œ๊ฐ€ ํŠธ๋ฆฌ๊ฑฐ๋˜๋ฉฐ, Jenkins๋Š” SSH๋กœ EC2 ์„œ๋ฒ„์— ์ ‘์†ํ•˜์—ฌ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. Jenkins๋Š” ๋นŒ๋“œ ๋ฐ ๋ฐฐํฌ ์ƒํƒœ๋ฅผ Slack์œผ๋กœ ์•Œ๋ฆผํ•ฉ๋‹ˆ๋‹ค.
    • Jenkins๊ฐ€ SSH๋กœ EC2์— ์ ‘์†ํ•˜์—ฌ Docker Hub์—์„œ ์ตœ์‹  ๋ฒ„์ „์˜ ์ด๋ฏธ์ง€๋ฅผ pull ๋ฐ›์Šต๋‹ˆ๋‹ค. ๊ธฐ์กด ๋ฒ„์ „์˜ ์ปจํ…Œ์ด๋„ˆ๋Š” down ์‹œํ‚ค๊ณ , ์ƒˆ๋กœ pullํ•œ ์ตœ์‹  ๋ฒ„์ „์˜ ์ด๋ฏธ์ง€๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ปจํ…Œ์ด๋„ˆ๋ฅผ up ์‹œํ‚ต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ตœ์‹  ๋ฒ„์ „์ด ์œ ์ง€๋˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
  • Redis, Spirng

    • Redis์™€ Spring์€ ๊ฐ๊ฐ Docker ์ปจํ…Œ์ด๋„ˆ๋กœ ๊ตฌ์„ฑ๋˜์–ด EC2 ์ธ์Šคํ„ด์Šค์— ๋ฐฐํฌ๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค.

    • ๊ฐ๊ฐ์˜ ์ปจํ…Œ์ด๋„ˆ๋กœ ๋ฐฐํฌํ•œ ์ด์œ ๋Š” EC2 ํ•˜๋‚˜๊ฐ€ ํ•˜๋‚˜์˜ ๊ฐ€์ƒ์˜ ์ปดํ“จํ„ฐ๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. Spring ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ Redis๋ฅผ ์„œ๋กœ ๋‹ค๋ฅธ ์ธํ”„๋ผ์— ๋ฐฐํฌํ•จ์œผ๋กœ์จ, ํ•˜๋‚˜์˜ ์„œ๋น„์Šค๊ฐ€ ์ค‘๋‹จ๋˜๋”๋ผ๋„ ๋‹ค๋ฅธ ์„œ๋น„์Šค์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Redis๊ฐ€ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒจ๋„ Spring ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ž์ฒด๋Š” ์—ฌ์ „ํžˆ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    • ์—ฌ๊ธฐ์„œ ๋„์ปค๋กœ EC2์— ๋ฐฐํฌํ•œ ์ด์œ ๋Š” Redis๋ฅผ ๋„์ปค์— ์ปจํ…Œ์ด๋„ˆํ™”ํ•˜๋ฉด Redis๋ฅผ ์„ค์น˜, ๊ด€๋ฆฌ, ๋ฐฐํฌํ•˜๋Š” ์ž‘์—…์ด ๋‹จ์ˆœํ™”ํ•ด์ง€๊ณ  ๋„คํŠธ์›Œํฌ์—์„œ ๋น ๋ฅด๊ณ  ์•ˆ์ •์ ์œผ๋กœ Redis์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

    • Redis๋ฅผ ์ด์šฉํ•˜์—ฌ ์‹œ๊ฐ„๋ณ„ ์กฐํšŒ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•˜์—ฌ ๋žญํ‚น์„ ์‚ฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ์ฝ๊ธฐ์— ์žฅ์ ์ด ์žˆ๋Š” key-value ํ˜•์‹์ธ Redis์— ์ €์žฅํ•œ ํ›„ ์‚ฌ์šฉ์ž๊ฐ€ ์ ‘๊ทผ ์‹œ์— Redis์—์„œ ๋žญํ‚น ๋ฐ์ดํ„ฐ๋ฅผ ๊บผ๋‚ด์„œ ์กฐํšŒํ•˜๋„๋ก ์ ์šฉ์‹œ์ผฐ์Šต๋‹ˆ๋‹ค.

  • RDS, MySQL

    • RDS๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„œ๋ฒ„ ๊ด€๋ฆฌ๋ฅผ ์ž๋™ํ™”ํ•˜์—ฌ ์šด์˜ ๋ถ€๋‹ด์„ ์ค„์—ฌ์ค๋‹ˆ๋‹ค. EC2 ์ธ์Šคํ„ด์Šค์— DB๋ฅผ ์„ค์น˜ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์€ ๊ฐœ์ธ ์†Œ์œ  ์ฐจ๋Ÿ‰์„ ์ด์šฉํ•˜๋Š” ๊ฒƒ๊ณผ ๋น„์Šทํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ์ธ ์†Œ์œ  ์ฐจ๋Ÿ‰์„ ์ด์šฉํ•˜๋ฉด ์œ ์ง€ ๋ณด์ˆ˜, ๋ณดํ—˜์ฒ˜๋ฆฌ ๊ฐ™์€ ์ผ๋“ค์€ ์˜จ์ „ํžˆ ์šด์ „์ž๊ฐ€ ๋ถ€๋‹ดํ•ฉ๋‹ˆ๋‹ค. ์ฐจ๋Ÿ‰ ์ •๋น„๋ฅผ ์œ„ํ•ด ์ •๋น„์†Œ์— ์ฃผ๊ธฐ์ ์œผ๋กœ ๋ฐฉ๋ฌธํ•ด์•ผ ํ•˜๊ณ  ๊ธฐํƒ€ ์ฐจ๋Ÿ‰๊ณผ ๊ด€๋ จ๋œ ๋‹ค๋ฅธ ์ผ์ด ์ƒ๊ธธ ๋•Œ ๋“ค์—ฌ์•ผํ•˜๋Š” ์‹œ๊ฐ„๊ณผ ์ˆ˜๊ณ ๊ฐ€ ํฝ๋‹ˆ๋‹ค. ์ฆ‰, ์‚ฌ์šฉ์ž๊ฐ€ ์ผ์ผ์ด ์‹œ๊ฐ„์„ ํˆฌ์žํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—”์ง„์˜ ์„ค์น˜์™€ ๋ฒ„์ „๊ด€๋ฆฌ, ๋ฐ์ดํ„ฐ ๋ฐฑ์—… ๋“ฑ์„ ํ•ด์•ผ๋œ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

    • ํ•˜์ง€๋งŒ RDS๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ Œํ„ฐ์นด ํšŒ์‚ฌ์—์„œ ์ฐจ๋Ÿ‰์„ ๋Œ€์—ฌํ•˜๋Š” ๊ฒƒ๊ณผ ๋น„์Šทํ•ฉ๋‹ˆ๋‹ค. ๋ Œํ„ฐ์นด ํšŒ์‚ฌ์—์„œ ์ฐจ๋Ÿ‰์„ ๋Œ€์—ฌํ•˜๋ฉด ๋Œ€์—ฌ ์ฐจ๋Ÿ‰๊ณผ ๊ด€๋ จํ•˜์—ฌ ์‹œ๊ฐ„์ด ๋“ค์–ด๊ฐ€๋Š” ์ผ๋“ค์„ ๋ Œํ„ฐ์นด ํšŒ์‚ฌ์—์„œ ๋Œ€์‹  ์ฒ˜๋ฆฌํ•˜๊ณ  ์šด์ „์ž๋Š” ์ฐจ๋Ÿ‰์„ ๊ด€๋ฆฌํ•˜๋Š” ์ผ์— ๋Œ€ํ•ด์„œ ์‹œ๊ฐ„์„ ๋”ฐ๋กœ ์Ÿ์„ ํ•„์š” ์—†์ด ์šด์ „๋งŒ ํ•˜๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋งค์šฐ ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

    • RDS๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์œ ์ง€ ๋ณด์ˆ˜์™€ ๊ด€๋ จ๋œ ์ผ๋“ค์„ RDS์—์„œ ์ „์ ์œผ๋กœ ์ž๋™ ๊ด€๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์ž๊ฐ€ ํ•ด์•ผ ํ•  ์ผ์€ ์ดˆ๊ธฐ ์„ค์ •์„ ์ œ์™ธํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์ผ๋ฐ–์— ์—†๊ธฐ์— ํฐ ํŽธ์˜์„ฑ์„ ๋А๋‚„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • MySQL

    • MySQL์€ ๋†’์€ ์„ฑ๋Šฅ์„ ๊ฐ€์ง„ ๋น ๋ฅธ ์ฝ๊ธฐ ์ž‘์—…์„ ์ง€์›ํ•˜๋ฉฐ, ์ƒ๋Œ€์ ์œผ๋กœ ๊ฐ„๋‹จํ•œ ์ฝ๊ธฐ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ๋•Œ ํšจ๊ณผ์ ์œผ๋กœ ์ฝ๊ธฐ ์ค‘์‹ฌ์˜ ์ž‘์—…์— ์œ ์šฉํ•˜๋ฉฐ, ๋ฐ์ดํ„ฐ ์—…๋ฐ์ดํŠธ๊ฐ€ ์ž์ฃผ ์ด๋ฃจ์–ด์ง€์ง€ ์•Š๋Š”, ํ”„๋กœํ† ํƒ€์ž… ๋˜๋Š” ์ž‘์€ ๊ทœ๋ชจ์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.

    โ‡’ ์šฐ๋ฆฌ ํ”„๋กœ์ ํŠธ๋Š” ์“ฐ๊ธฐ ์ž‘์—…์ด ๋นˆ๋ฒˆํ•˜๊ธฐ ๋ณด๋‹ค๋Š” ์ฝ๊ธฐ ์ž‘์—…์ด ํ›จ์”ฌ ๋งŽ์„ ๊ฒƒ์œผ๋กœ ๋ณด์ด๊ณ  ๊ทœ๋ชจ๋„ ๊ทธ๋ ‡๊ฒŒ ํฌ์ง€ ์•Š๋‹ค๊ณ  ํŒ๋‹จํ•ด์„œ mysql์„ ์„ ํƒํ–ˆ์Šต๋‹ˆ๋‹ค.

  • EC2

    • EC2๋ฅผ ์„ ํƒํ•œ ์ด์œ ๋Š” ECS๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด Docker ๊ธฐ๋ฐ˜์˜ ์ปจํ…Œ์ด๋„ˆ ๋ฐฉ์‹์œผ๋กœ ๋ฐฐํฌ๋ฅผ ํ•ด์ฃผ๊ณ  EC2๋ฅผ Fargate์™€ ํ•จ๊ป˜ํ•  ๊ฒฝ์šฐ ์šด์˜์„ AWS์—๊ฒŒ ๋งก๊ธธ ์ˆ˜ ์žˆ๋Š” Serverless ์—”์ง„์ด๊ธฐ ๋•Œ๋ฌธ์— ํŽธ๋ฆฌํ•˜๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์ง€๋งŒ ๋ฐฐํฌ๋ฅผ ์ฒ˜์Œ ํ•ด๋ณด๋Š” ๊ฒƒ์ด๊ณ  ๊ณผ์ • ํ•˜๋‚˜ํ•˜๋‚˜๋ฅผ ์ง์ ‘ ์ง„ํ–‰ํ•˜๋ฉฐ EC2์— ๋Œ€ํ•ด ๋”์šฑ ์ˆ™์ง€ํ•œ ๋’ค์— ECS๋ฅผ ์‹œ๋„ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์„ ๊ฒƒ์ด๋ผ ํŒ๋‹จํ•˜์—ฌ EC2๋กœ๋งŒ ๋ฐฐํฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ ํƒํ–ˆ์Šต๋‹ˆ๋‹ค.
  • S3

    • ์‚ฌ์šฉ์ž๊ฐ€ ๋Œ€ํ‘œ ์‚ฌ์ง„์ด๋‚˜ ๋งˆ์ปค์— ๊ธ€, ์‚ฌ์ง„์„ ๋“ฑ๋กํ•  ๋•Œ ์ด๋ฏธ์ง€๋ฅผ ์—…๋กœ๋“œ ํ•ด์•ผ๋˜๋ฏ€๋กœ ํŒŒ์ผ ์—…๋กœ๋“œ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋Š” S3๋ฅผ ๋„์ž…ํ–ˆ์Šต๋‹ˆ๋‹ค.

    • ์ง์ ‘ ์—…๋กœ๋“œํ•˜๋ฉด ๋‹ค๋ฅธ ์„œ๋ฒ„๊ฐ€ ์กด์žฌํ•  ๊ฒฝ์šฐ ํ•ด๋‹น ์„œ๋ฒ„์—์„œ๋Š” ํŒŒ์ผ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ณ  ์„œ๋ฒ„์— ๋ถ€ํ•˜๊ฐ€ ์ƒ๊ธฐ๊ฒŒ ๋˜๋ฉฐ ์„ฑ๋Šฅ ์ €ํ•˜์˜ ์šฐ๋ ค๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— S3์— ๋”ฐ๋กœ ์ €์žฅํ•˜๊ธฐ๋กœ ์˜์‚ฌ๊ฒฐ์ • ํ–ˆ์Šต๋‹ˆ๋‹ค.

  • Rout53

    • ๋„๋ฉ”์ธ์˜ ์ด๋ฆ„์„ IP ์ฃผ์†Œ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” DNS(Domain Name Server) ์„œ๋น„์Šค๋กœ ์˜ˆ๋ฅผ ๋“ค์–ด, ์‚ฌ์šฉ์ž๊ฐ€ https://detourofficial.com/ ๊ณผ ๊ฐ™์€ ๋„๋ฉ”์ธ ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜๋ฉด Route53์€ ์ด๋ฅผ 192.0.X.X๊ณผ ๊ฐ™์€ IP ์ฃผ์†Œ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญํ•œ ์›น ์„œ๋ฒ„์— ์—ฐ๊ฒฐ๋˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

    • route 53์˜ ํ•ต์‹ฌ: ๋„๋ฉ”์ธ ๋„ค์ž„ ์„œ๋ฒ„๋ฅผ ์ž„๋Œ€ํ•ด์ฃผ๋Š” ์—ญํ• 

    • DNS ์„œ๋ฒ„ ๊ด€๋ฆฌ, Spring๋–  ์žˆ๋Š” EC2์— ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์€ rout53์„ ํ†ตํ•ด ๋„๋ฉ”์ธ ๋„ค์ž„์œผ๋กœ ๋“ค์–ด๊ฐ€๊ธฐ or IP ์ฃผ์†Œ๋กœ ๋“ค์–ด๊ฐ€๊ธฐ.

    • ์ €ํฌ๊ฐ€ ์‚ฐ ๋„๋ฉ”์ธ ์ฃผ์†Œ์™€ EC2 IP์ฃผ์†Œ๋ž‘ ์—ฐ๊ฒฐ : ํ˜ธ์ŠคํŒ…

    • EC2๋งˆ๋‹ค IP ์ฃผ์†Œ๊ฐ€ ๋‹ค ๋‹ค๋ฆ…๋‹ˆ๋‹ค.(3๊ฐœ๊ฐ€ ๋‹ค๋ฅธ ๊ฒƒ)

    • EC2๊ฐ€ ๊บผ์ง€๋ฉด IP ์ฃผ์†Œ๊ฐ€ ๋ฐ”๋€Œ๊ธฐ ๋•Œ๋ฌธ์— ํƒ„๋ ฅ์  IP ์ฃผ์†Œ๋ฅผ ํ†ตํ•ด ๊ณ ์ • IP๋ฅผ ๋ถ€์—ฌํ•ด์•ผ EC2๋ฅผ ๋„๊ณ  ํ‚ค๊ณ  ํ•ด๋„ IP ์ฃผ์†Œ์˜ ๋ณ€๋™์ด ์—†์Šต๋‹ˆ๋‹ค.

    • NGINX(์›น ์„œ๋ฒ„) ์Šคํ”„๋ง๋ณด๋‹ค ์•ž ๋‹จ์— ๋‚˜์™€์žˆ๋Š” ์„œ๋ฒ„๋กœ Spring์„ ์ข€ ๋” ์•ˆ์ •์ ์œผ๋กœ ๋„์›Œ์ฃผ๋Š” ์—ญํ• . EC2์— NGINX ์„ค์น˜ํ•˜๊ณ  ๊ทธ ์œ„์— ๋„์šฐ๋Š” ๊ฒŒ ๊ธฐ๋ณธ์ ์ธ๋ฐ ์„ค๊ณ„๊ฐ€ ์ž˜๋ชป๋จ. ์›๋ž˜๋Š” ์›น ์„œ๋ฒ„๋กœ ๋ฐฐํฌํ•ด์•ผ ๋จ. ์›น์„œ๋ฒ„๊นŒ์ง€๋Š” ์•„๋‹ˆ๊ณ  ์™“์Šจ์˜ ์—ญํ• ์„ ํ•ด์„œ AWS๋ž‘ ์›น์„œ๋ฒ„๋ž‘์€ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

    • ec2 -> nginx -> spring

    • ๊ทธ๋ž˜๋„ ๋Œ์•„๊ฐ€๋Š” ์ด์œ ๋Š” spring์— apache tomcat์ด ๋‚ด์žฅ๋˜์–ด ์žˆ๋Š”๋ฐ ์ด๊ฒŒ WAS์˜ ์—ญํ• ์ด๊ธฐ ๋•Œ๋ฌธ์— (WebServer๋ž‘ ๋‹ค๋ฆ…๋‹ˆ๋‹ค)

  • Front
    • React๋ฅผ ์‚ฌ์šฉํ–ˆ๊ณ  vercel์„ ํ†ตํ•ด ๋ฐฐํฌํ–ˆ์Šต๋‹ˆ๋‹ค.

    • vercel์ด react๋ž‘ ์—ฐ๊ฒฐํ•˜๊ณ  rout53์„ ํ†ตํ•ด ํ˜ธ์ŠคํŒ…ํ•ฉ๋‹ˆ๋‹ค.

This post is licensed under CC BY 4.0 by the author.