Skip to content

Latest commit

ย 

History

History
281 lines (183 loc) ยท 12.3 KB

README.md

File metadata and controls

281 lines (183 loc) ยท 12.3 KB

be08-4th-200ok-2vent

๊ณง์ถ”๊ฐ€ํ• ํฌ์Šคํ„ฐ


โšกํ•œํ™”์‹œ์Šคํ…œ BEYOND SW์บ ํ”„ 4์ฐจ devops ํ”„๋กœ์ ํŠธโšก


โœ‹ ํŒ€์› ์†Œ๊ฐœ

TEAM 200ok

๋ฐ•์„ฑ์ค€(ํŒ€์žฅ)
๊น€๋„ํ•˜
์„œํ˜„์ง€
์ „ํ˜„๊ทœ
์กฐํ˜œ์ธ



๐Ÿ› ๏ธ Tech Stack ๐Ÿ› ๏ธ





โš™๏ธ Tool โš™๏ธ



๐Ÿ’ก ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ

2VENT(์ง€์—ญ ํ–‰์‚ฌ ์ปค๋ฎค๋‹ˆํ‹ฐ)

  • ์‚ฌ์šฉ์ž์—๊ฒŒ ์ฃผ๋ณ€๊ณผ ํƒ€ ์ง€์—ญ์˜ ํ–‰์‚ฌ ์ •๋ณด๋ฅผ ์‰ฝ๊ณ  ๋น ๋ฅด๊ฒŒ ์ œ๊ณตํ•˜๋Š” ์„œ๋น„์Šค

  • ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜๋Š” ํ–‰์‚ฌ๋งŒ์„ ์™์™ ๊ณจ๋ผ๋‚ผ ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค๋‹ˆ๋‹ค!

  • ์ง€๋„๋ฅผ ์ด์šฉํ•ด ์šฐ๋ฆฌ๋‚˜๋ผ ํ–‰์‚ฌ๋“ค์˜ ์œ„์น˜์ •๋ณด๋ฅผ ์•Œ๊ณ  ์‹ถ๋‹ค๋ฉด~? ํ–‰์—…ํŠ€๋กœ ๊ณ ๊ณ !

  • ์ง€์—ญ๋ณ„! ์˜จ๋ผ์ธ๊ณผ ์˜คํ”„๋ผ์ธ! ์œ ๋ฃŒ์™€ ๋ฌด๋ฃŒ! ๋“ฑ ๋‹ค์–‘ํ•œ ์กฐ๊ฑด์„ ํ•„ํ„ฐ๋งํ•œ ๊ฒฐ๊ณผ๊ฐ€ ์•Œ๊ณ  ์‹ถ๋‹ค๋ฉด? ํ–‰์—…ํŠ€๋กœ ๊ณ ๊ณ !

  • ์ง€์—ญ๋ณ„ ๊ฒŒ์‹œํŒ์„ ํ†ตํ•œ ์ž์œ ๋กœ์šด ์†Œํ†ต์˜ ์žฅ์„ ๊ฒฝํ—˜ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด? ํ–‰์—…ํŠ€๋กœ ๊ณ ๊ณ !

  • ๋‹ค์–‘ํ•œ ํ•„ํ„ฐ ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ๊ด€์‹ฌ์žˆ๋Š” ํ–‰์‚ฌ๋งŒ ๋น ๋ฅด๊ฒŒ ์•Œ์•„๋ด…์‹œ๋‹ค!

  • ๊ฐ„ํŽธํ•˜๊ณ  ์žฌ๋ฏธ์žˆ๋Š” ํ–‰์‚ฌ ํƒ์ƒ‰, ์ด์ œ 2VENT์™€ ํ•จ๊ป˜ํ•˜์„ธ์š”!


๐Ÿ”† ํ”„๋กœ์ ํŠธ ๋ชฉ์  ๋ฐ ๊ธฐ๋Œ€ํšจ๊ณผ

ํ–‰์‚ฌ ์ถ”์ด ๊ทธ๋ž˜ํ”„

์ตœ๊ทผ ์ด๋ฒคํŠธ๋ฐ์ดํ„ฐ์„ผํ„ฐ ๋ถ„์„ ๊ฒฐ๊ณผ, ์ฝ”๋กœ๋‚˜ 19 ์ดํ›„ ์—ฐ๊ฐ„ ์ด๋ฒคํŠธ ๋ฐ ํ–‰์‚ฌ๊ฐ€ 2022๋…„๋„ ๋Œ€๋น„ 39%๊ฐ€๋Ÿ‰ ์ฆ๊ฐ€ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์œผ๋กœ ์ฝ”๋กœ๋‚˜ ์ด์ „ ์ˆ˜์ค€์œผ๋กœ ํšŒ๋ณต๋˜๊ณ  ์žˆ๋Š” ๊ฒƒ์„ ํ•œ ๋ˆˆ์— ํ™•์ธํ•ด๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ฒ˜๋Ÿผ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ํ–‰์‚ฌ์— ์ฐธ์—ฌํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์„ ๋ณด๊ณ  ์‰ฝ๊ณ  ๋น ๋ฅด๊ฒŒ ์‚ฌ์šฉ์ž๋“ค์˜ ๊ด€์‹ฌ์‚ฌ์— ๋งž๋Š” ํ–‰์‚ฌ๋ฅผ ์ฐพ์•„์ฃผ๊ธฐ ์œ„ํ•ด ํ”„๋กœ์ ํŠธ๋ฅผ ๊ฐœ๋ฐœํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

โœ” ์‚ฌ์šฉ์ž๋“ค์—๊ฒŒ ์ฃผ๋ณ€๊ณผ ํƒ€ ์ง€์—ญ์˜ ํ–‰์‚ฌ ์ •๋ณด๋ฅผ ์‰ฝ๊ณ  ๋น ๋ฅด๊ฒŒ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

โœ” ๋‹ค์–‘ํ•œ ํ•„ํ„ฐ ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ๊ฐœ์ธ์˜ ๊ด€์‹ฌ์‚ฌ์— ๋งž๋Š” ํ–‰์‚ฌ๋ฅผ ์†์‰ฝ๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

โœ” ์ง€์—ญ๋ณ„ ๊ฒŒ์‹œํŒ์„ ํ†ตํ•ด ์‚ฌ์šฉ์ž๋“ค์ด ํŠน์ • ์ง€์—ญ ํ–‰์‚ฌ์— ๋Œ€ํ•ด ์ž์œ ๋กญ๊ฒŒ ์˜๊ฒฌ์„ ๋‚˜๋ˆ„๊ณ ,
๊ฒŒ์‹œ๊ธ€๊ณผ ๋Œ“๊ธ€์„ ํ†ตํ•ด ํ™œ๋ฐœํ•˜๊ฒŒ ์†Œํ†ตํ•  ์ˆ˜ ์žˆ๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ๋ฅผ ๊ตฌ์ถ•ํ•ฉ๋‹ˆ๋‹ค.

โœ” ์‚ฌ์šฉ์ž๋“ค์€ ํ–‰์‚ฌ ์ฐธ์—ฌ์™€ ์ •๋ณด ๊ตํ™˜์˜ ํŽธ๋ฆฌํ•จ์„ ๊ฒฝํ—˜ํ•˜๊ณ , ์ง€์—ญ ์‚ฌํšŒ์˜ ํ™œ์„ฑํ™”์— ๊ธฐ์—ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


๐Ÿ“‹ ์‹œ์Šคํ…œ ์•„ํ‚คํ…์ฒ˜

image



๐Ÿ“š ๋ฐฐํฌ ์‹œ๋‚˜๋ฆฌ์˜ค

1. ์†Œ์Šค ์ฝ”๋“œ ๋ณ€๊ฒฝ ๋ฐ Git Push

- ์†Œ์Šค ์ฝ”๋“œ ์—…๋ฐ์ดํŠธ ๋ฐ ๋ณ€๊ฒฝ ์‚ฌํ•ญ git์— push

2. GItHub Webhook ํŠธ๋ฆฌ๊ฑฐ

- github๋Š” ์ตœ์‹  ๋ฒ„์ „์˜ ํ”„๋กœ์ ํŠธ๊ฐ€ push ๋˜๋ฉด Jenkins์™€ ์—ฐ๋™๋œ Webhook์„ ํ†ตํ•ด ๋ณ€๊ฒฝ๋œ ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ HTTP ์š”์ฒญ ์ „์†ก

3. Jenkins ํŒŒ์ดํ”„๋ผ์ธ ์‹คํ–‰

1. Git ํ”„๋กœ์ ํŠธ clone
    - Jenkins ์„œ๋ฒ„๋Š” HTTP ์š”์ฒญ์ด ๊ฐ์ง€๋˜๋ฉด, github์— ์žˆ๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ํด๋ก ํ•œ๋‹ค. ( git clone )
2. ๋นŒ๋“œ ์‹คํ–‰
    - ํ”„๋ก ํŠธ์—”๋“œ ํ”„๋กœ์ ํŠธ๋Š” `npm run build`ย ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋นŒ๋“œํ•œ๋‹ค.
    - ๋ฐฑ์—”๋“œ ํ”„๋กœ์ ํŠธ๋Š” `./gradlew build`ย  ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋นŒ๋“œํ•œ๋‹ค.
3. Docker image ์ƒ์„ฑ
    - ์ƒ์„ฑ๋œ ๋นŒ๋“œ ํŒŒ์ผ๋กœ Docker image๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
4. Docker Hub์— Docker image push
    - ์ƒ์„ฑ๋œ Docker image๋ฅผ Docker Hub์— push ํ•œ๋‹ค.
5. Kubernetes ๋ฐฐํฌ ์ ์šฉ
    - ๋ฐฐํฌ ์ปจํ…Œ์ด๋„ˆ์˜ ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑ๋œ Docker image๋กœ ์—…๋ฐ์ดํŠธํ•œ๋‹ค.

4. ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ ์™„๋ฃŒ

- ๋กค๋ง ์—…๋ฐ์ดํŠธ๊ฐ€ ์ ์šฉ๋˜์–ด ์œ ์ €๋Š” ์ค‘๋‹จ์—†์ด ์„œ๋น„์Šค์— ์ ‘๊ทผ ๊ฐ€๋Šฅ



๐Ÿ”ง ๋ฐฐํฌ ํŒŒ์ผ

FRONTEND CODE

๐Ÿ”— PIPELINE
๐Ÿ”— k8s

BACKEND CODE

๐Ÿ”— PIPELINE
๐Ÿ”— k8s

COMPOSE.YAML

networks:
  pocket:
    external: true

services:
  mysql:
    image: 'mysql:latest'
    container_name: '2vent'
    environment:
      - 'MYSQL_DATABASE=2vent'
      - 'MYSQL_PASSWORD=1234'
      - 'MYSQL_ROOT_HOST='
      - 'MYSQL_ROOT_PASSWORD=1234'
      - 'MYSQL_USER=username'
    ports:
      - '3306:3306'
    restart: 'on-failure'

  redis:
    image: 'redis:latest'
    container_name: '2vent_redis'
    ports:
      - '6379:6379'



โœจ ๋ฐฐํฌ ํ…Œ์ŠคํŠธ

Jenkins Pipeline 1๏ธโƒฃ git์— pushํ•  ์‹œ webhook ๋ฐœ์ƒ

1๋ฒˆ

2๏ธโƒฃ CI/CD

4๋ฒˆ

3๏ธโƒฃ backend/frontend ์ค‘ ๋ณ€๊ฒฝ๋œ ์‚ฌํ•ญ์ด ์—†๋Š” ๊ฒฝ์šฐ, build skipํ•˜๊ณ  ๋ณ€๊ฒฝ๋œ ๊ฒƒ๋งŒ build 02_แ„‡แ…งแ†ซแ„€แ…งแ†ผแ„‰แ…กแ„’แ…กแ†ผX_แ„‡แ…ตแ†ฏแ„ƒแ…ณ_แ„‰แ…ณแ„แ…ตแ†ธ

4๏ธโƒฃ ๋ฐฐํฌ๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด ์ด๋ฏธ์ง€ ๋ณ€๊ฒฝ ํ™•์ธ

  • Backend
01-1-1_แ„‡แ…ขแ†จแ„‹แ…ฆแ†ซแ„ƒแ…ณ_แ„‡แ…ขแ„‘แ…ฉแ„Œแ…ฅแ†ซ_แ„‹แ…ตแ„†แ…ตแ„Œแ…ตแ„†แ…งแ†ผ 01-1-2_แ„‡แ…ขแ†จแ„‹แ…ฆแ†ซแ„ƒแ…ณ_แ„‡แ…ขแ„‘แ…ฉแ„’แ…ฎ_แ„‹แ…ตแ„†แ…ตแ„Œแ…ตแ„†แ…งแ†ผ
  • Frontend
01-1-3_แ„‘แ…ณแ„…แ…ฉแ†ซแ„แ…ณแ„‹แ…ฆแ†ซแ„ƒแ…ณ_แ„‡แ…ขแ„‘แ…ฉแ„Œแ…ฅแ†ซ_แ„‹แ…ตแ„†แ…ตแ„Œแ…ตแ„†แ…งแ†ผ 01-1-4_แ„‘แ…ณแ„…แ…ฉแ†ซแ„แ…ณแ„‹แ…ฆแ†ซแ„ƒแ…ณ_แ„‡แ…ขแ„‘แ…ฉแ„’แ…ฎ_แ„‹แ…ตแ„†แ…ตแ„Œแ…ตแ„†แ…งแ†ผ

5๏ธโƒฃ ์ž‘์—… ์™„๋ฃŒ ํ›„ discord webhook ๋ฐœ์ƒ
04_แ„ƒแ…ตแ„‰แ…ณแ„แ…ฉแ„ƒแ…ณ_แ„‹แ…ฐแ†ธแ„’แ…ฎแ†จ
๋ฌด์ค‘๋‹จ ๋ฐฐํฌ(Rolling Update) 1๏ธโƒฃ Backend
  • Dashboard

    5๋ฒˆ

  • ์‹คํ–‰ ํ™”๋ฉด(Swagger ํƒ€์ดํ‹€ ๋ณ€๊ฒฝ)

    2๋ฒˆ



2๏ธโƒฃ Frontend

  • Dashboard

    6๋ฒˆ

  • ์‹คํ–‰ ํ™”๋ฉด(๋ฉ”์ธ ํ…์ŠคํŠธ ๋ณ€๊ฒฝ)

    3๋ฒˆ

์‹คํ–‰ ํ™”๋ฉด
  • ๋ฉ”์ธ ํŽ˜์ด์ง€

    แ„†แ…ฆแ„‹แ…ตแ†ซ แ„‘แ…ฆแ„‹แ…ตแ„Œแ…ต



  • ๋ฆฌ์ŠคํŠธ ํŽ˜์ด์ง€ ์กฐํšŒ

    แ„…แ…ตแ„‰แ…ณแ„แ…ณ



  • ๊ฒŒ์‹œ๊ธ€ ์ž‘์„ฑ ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ

    แ„€แ…ฆแ„‰แ…ตแ„†แ…ฎแ†ฏแ„Œแ…กแ†จแ„‰แ…ฅแ†ผ



  • ํšŒ์› ์ฆ๊ฒจ์ฐพ๊ธฐ ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ

    แ„Œแ…ณแ†ฏแ„€แ…งแ„Žแ…กแ†ฝแ„€แ…ต


๐Ÿ™ ํ•œ์ค„ ํšŒ๊ณ ๋ก

ย ย ย ย ํŒ€ย ์›ย ย ย ย  ํšŒ๊ณ 
๋ฐ•์„ฑ์ค€
Docker, Kubernetes, Jenkins๋ฅผ ํ™œ์šฉํ•œ CI/CD ๊ตฌ์ถ•์„ ๊ฒฝํ—˜ํ•ด๋ณผ ์ˆ˜ ์žˆ๋Š” ํ”„๋กœ์ ํŠธ์˜€์Šต๋‹ˆ๋‹ค. ๋‹ค๋งŒ ์ œ์•ฝ์‚ฌํ•ญ์œผ๋กœ ์ธํ•ด ๋กœ์ปฌ์—์„œ ํ…Œ์ŠคํŠธํ•œ ๊ฒƒ์ด ์•„์‰ฝ์Šต๋‹ˆ๋‹ค. ํŒ€์›๋“ค ๊ณ ์ƒํ•˜์…จ์Šต๋‹ˆ๋‹ค~
ย 
๊น€๋„ํ•˜
์ƒ๊ฐ๋ณด๋‹ค ์‹œ๊ฐ„์ด ๋งŽ์ด ๊ฑธ๋ฆฌ๊ณ  ๋ฐฐํฌ์— ๋Œ€ํ•ด ๋งŽ์€ ๋ถ€์กฑํ•จ์„ ๋Š๊ปด ๋”์šฑ ๋” ํ•™์Šต์— ๋Œ€ํ•œ ํ•„์š”์„ฑ์„ ๋Š๋‚„ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ตœ์ข… ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ๋ฐฐํฌ ๋ถ€๋ถ„์˜ ์™„์„ฑ๋„๋ฅผ ๋†’์—ฌ ๋งˆ๋ฌด๋ฆฌ ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.
ย 
์„œํ˜„์ง€
๊ณ ์ƒํ•˜์…จ์Šต๋‹ˆ๋‹ค. ํŒŒ์ด๋„ ํ•˜๋Ÿฌ ๊ฐ‘์‰ฌ๋‹ค~
ย 
์ „ํ˜„๊ทœ
devops์— ๋Œ€ํ•ด ๋ฐฐ์šธ ์ˆ˜ ์žˆ๋Š” ์ข‹์€ ๊ธฐํšŒ์˜€๋˜ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. 2์ฃผ๋ผ๋Š” ๊ธฐ๊ฐ„ ๋™์•ˆ ๋‹ค๋“ค ๊ณ ์ƒํ•˜์…จ์Šต๋‹ˆ๋‹ค!
ย 
์กฐํ˜œ์ธ
2์ฃผ๋„ ์•ˆ๋˜๋Š” ์งง์€ ๊ธฐ๊ฐ„๋™์•ˆ ๋ฐฐํฌ๋ฅผ ์ œ๋Œ€๋กœ ์ดํ•ดํ•˜๊ธฐ์—๋Š” ๋ถ€์กฑํ–ˆ๋˜ ์‹œ๊ฐ„์ด์—ˆ๋˜๊ฒƒ ๊ฐ™์•„ ์ตœ์ข…๋•Œ ์ข…ํ•ฉ์ ์œผ๋กœ ๋” ์—ด์‹ฌํžˆ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค ๋„ˆ๋ฌด ๊ณ ์ƒํ•˜์…จ์Šต๋‹ˆ๋‹ค
ย