CI/CD ๊ทธ๊ฒŒ ๋ญ์•ผ?

2022. 9. 12. 23:37ยท ๐Ÿ›ณ DevOps
๋ชฉ์ฐจ
  1. ๊ฐ„๋‹จํ•˜๊ฒŒ ๋งํ•˜๋ฉด
  2. 1. CI (Continuous Integration)
  3. 3. CI/CD work flow์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ๋“ค
  4. 4. Jenkins๋ฅผ ์ด์šฉํ•œ ๋ฐฐํฌ ๊ณผ์ •
  5. (1) IaC๋ฅผ ๊ฑฐ์น˜์ง€ ์•Š๋Š” ํŒŒ์ดํ”„๋ผ์ธ
  6. (2) IaC๋ฅผ ๊ฑฐ์น˜๋Š” ํŒŒ์ดํ”„๋ผ์ธ
  7. (4) EC2 / VM์— ๋ฐฐํฌ ํŒŒ์ดํ”„๋ผ์ธ

๊ฐ„๋‹จํ•˜๊ฒŒ ๋งํ•˜๋ฉด

๊ฐœ๋ฐœ์ž ํŒ€์— ์˜ํ•ด ๋งŒ๋“ค์–ด์ง„ ๊ฒฐ๊ณผ๋ฌผ์— ๋Œ€ํ•ด ์ง€์†์ ์ธ ํ†ตํ•ฉ(CI)๊ณผ ์ง€์†์ ์ธ ๋ฐฐํฌ(CD)๋ฅผ ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค์ด๋‹ค.

 

1. CI (Continuous Integration)

CI๋ž€ ์ž‘์—…๋œ ์ฝ”๋“œ์˜ ๋นŒ๋“œ, ํ…Œ์ŠคํŠธ, ํŒจํ‚ค์ง• ์ž‘์—…์˜ ์ž๋™ํ™” ๊ณผ์ •์˜ ๋‹จ๊ณ„์ด๋‹ค.

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

2. CD

Continuous Delivery์™€ Continuous Deployment ๋‘ ๊ฐ€์ง€ ์˜๋ฏธ๊ฐ€ ์žˆ๋‹ค.

(1) Continuous Delivery

CI๋ฅผ ํ†ตํ•ด์„œ ์–ป์€ ํ†ตํ•ฉ๋œ ๊ฒฐ๊ณผ๋ฌผ์ด ๊ณ ๊ฐ์—๊ฒŒ ๋ฐฐํฌ๋˜๊ธฐ ์ „์— ๊ฒ€์ฆํ•˜๊ณ  ์ˆ˜๋™์ ์œผ๋กœ ๋ฐฐํฌ ์ „๋‹ฌํ•˜๋Š” ๋‹จ๊ณ„์ด๋‹ค.

(2) Continuous Deployment

 ์ž๋™ํ™”๋กœ ์ „ ๊ณผ์ •์„ ๋ฐฐํฌ๋ฅผ ํ•˜๋Š” ๋‹จ๊ณ„์ด๋‹ค.

 

3. CI/CD work flow์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ๋“ค

(1) VCS(SCM)

์—ฌ๋Ÿฌ ๊ฐœ๋ฐœ์ž๋“ค์ด ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ๊ฑด๋“œ๋ฆฌ๋Š” ์ƒํ™ฉ์— ์ฝ”๋“œ๋ฅผ ์„œ๋กœ ์—…๋กœ๋“œ(commit)๋ฅผ ํ•˜๋ฉด ์ƒ๊ธฐ๋ฉด ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ ์ด๊ฒƒ์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ์ฝ”๋“œ์˜ ๋ฒ„์ „ ๊ด€๋ฆฌ๋ฅผ ํ•ด์•ผํ•œ๋‹ค.
๊ทธ๋ž˜์„œ ์‚ฌ์šฉํ•˜๋Š”๊ฒŒ ๋Œ€ํ‘œ์ ์œผ๋กœ ํ˜•์ƒ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์ธ Git์ด๋‹ค.

(2) CI/CD ๋„๊ตฌ  (Jenkins, Travis CI, circle ci)

VCS์— ์ €์žฅ๋œ ์ฝ”๋“œ๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๊ณ 
build -> test -> package ์ผ๊ด„์ ์ธ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•ด์ค€๋‹ค.

test๋‹จ๊ณ„์—์„œ
(1) ์‹คํŒจ๋ฅผ ํ•œ๋‹ค๋ฉด ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๋ฉ”์‹œ์ง€๋ฅผ ๋˜์ ธ์ค˜์„œ ์ฝ”๋“œ์˜ ๊ฐœ์„ ์„ ์š”์ฒญํ•  ๊ฒƒ์ด๊ณ 
(2) ์„ฑ๊ณตํ•œ๋‹ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„์ธ ๋ฐฐํฌ ์ž‘์—…์œผ๋กœ ์ด๋™ํ•œ๋‹ค.

๋‹ค์‹œ ๋งํ•ด์„œ, Jenkins๋Š” CI/CD ๋‘ ๋ถ€๋ถ„์—์„œ ์ „๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๋‹ค.

(4) Build tool (Maven, Gradle)

CI๋ฅผ ํ†ตํ•ด ํŒจํ‚ค์ง•๋œ ์ฝ”๋“œ๋ฅผ ๋นŒ๋“œํ•˜๊ธฐ ์œ„ํ•œ ๋„๊ตฌ๋กœ์จ ์‚ฌ์šฉํ•œ๋‹ค.

(5) ๋ฐฐํฌ ์ž๋™ํ™” ๋„๊ตฌ (Ansible, Terraform)

IaC(Intrastructure as Code)๋ถ€๋ถ„์œผ๋กœ
์„œ๋ฒ„์— ์ธํ”„๋ผ์ŠคํŠธ๋Ÿญ์ณ ๊ด€๋ฆฌ(ํด๋ผ์šฐ๋“œ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ฐ€์ƒํ™” ์„œ๋ฒ„ ๋˜๋Š” ๋ฏธ๋“ค์›จ์–ด ์„œ๋น„์Šค ๊ด€๋ฆฌ)๋ฅผ script ์ฝ”๋“œ์— ์˜ํ•ด์„œ ํ•  ์ˆ˜ ์žˆ๋Š” ๋„๊ตฌ์ด๋‹ค.

(6) ์ปจํ…Œ์ด๋„ˆ ๋Ÿฐํƒ€์ž„ ๋„๊ตฌ(Docker, cri-o, Container d)

์ปจํ…Œ์ด๋„ˆ ๊ฐ€์ƒํ™” ํ˜•ํƒœ๋กœ ์šด์˜๋˜๋Š” ์„œ๋ฒ„์— ์ ์šฉ๋˜๋Š” ๋„๊ตฌ

(7) Orchestration ๋„๊ตฌ (Kubernetes)

๋„์ปค์™€ ๊ฐ™์€ ๋„๊ตฌ๋ฅผ ํ†ตํ•ด ๋ฐœ์ƒํ•œ ์ปจํ…Œ์ด๋„ˆ๋“ค์˜ ๋ฐฐํฌ, ์‹œ์Šคํ…œ, ํ™•์žฅ, ๋„คํŠธ์›Œํ‚น ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ๋„๊ตฌ
์Šค์ผ€์ค„, ์Šค์ผ€์ผ๋ง ์ž‘์—…์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์ด์šฉ๋˜๊ธฐ๋„ ํ•จ.

4. Jenkins๋ฅผ ์ด์šฉํ•œ ๋ฐฐํฌ ๊ณผ์ •

(1) IaC๋ฅผ ๊ฑฐ์น˜์ง€ ์•Š๋Š” ํŒŒ์ดํ”„๋ผ์ธ

web application์„ ๊ฐœ๋ฐœํ•œ๋‹ค๊ณ  ํ•˜๋ฉด ์ƒ์„ฑ๋˜๋Š” warํŒŒ์ผ์„
Was์ธ ์•„ํŒŒ์น˜ ํ†ฐ์บฃ์— ๋ฐฐํฌํ•˜๊ฑฐ๋‚˜ OR warํŒŒ์ผ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ ์ž์ฒด๋ฅผ ์ปจํ…Œ์ด๋„ˆ ๊ฐ€์ƒํ™” ํ™˜๊ฒฝ์— ๊ตฌ์ถ•ํ•˜์—ฌ ๋ฐฐํฌํ•œ๋‹ค.

 

(2) IaC๋ฅผ ๊ฑฐ์น˜๋Š” ํŒŒ์ดํ”„๋ผ์ธ

(3) ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ฅผ ํฌํ•จํ•œ ๋ฐฐํฌ ํŒŒ์ดํ”„๋ผ์ธ

์™ผ์ชฝ ๋ฐ˜์ด Jenkins๋ฅผ ์ด์šฉํ•˜๋Š” ๋ถ€๋ถ„๊นŒ์ง€๋ฅผ Continuous Integration(CI)๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๊ณ  
์˜ค๋ฅธ์ชฝ ๋ฐ˜์ด Continuous Delivery, Deployment(CD)๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

(4) EC2 / VM์— ๋ฐฐํฌ ํŒŒ์ดํ”„๋ผ์ธ

3๋ฒˆ๊นŒ์ง€์˜ ํŒŒ์ดํ”„๋ผ์ธ์€ ๋กœ์ปฌ์—์„œ์˜ ํ™˜๊ฒฝ์ด๊ณ  ์ด ํ™˜๊ฒฝ์„ ๊ทธ๋Œ€๋กœ ํด๋ผ์šฐ๋“œ์— ์˜ฎ๊ธธ ์ˆ˜ ์žˆ๋‹ค.
CI/CD๋ฅผ ์ด์šฉํ•ด์„œ ๋ฐฐํฌ์ž‘์—…์ด๋‚˜ ์šด์˜์ž‘์—…์„ ํ•  ๋•Œ๋Š” ๋ณดํ†ต Linuxํ™˜๊ฒฝ์—์„œ ๋งŽ์ด ์‹คํ–‰๋˜๋ฏ€๋กœ ๋กœ์ปฌ์—์„œ๋„ Linuxํ™˜๊ฒฝ์—์„œ ์ž‘์—…ํ•˜๋Š” ๊ฒƒ์„ ์ถ”์ฒœํ•œ๋‹ค.

์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'๐Ÿ›ณ DevOps' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

FEP Server์— ๋Œ€ํ•ด์„œ  (0) 2024.03.18
  1. ๊ฐ„๋‹จํ•˜๊ฒŒ ๋งํ•˜๋ฉด
  2. 1. CI (Continuous Integration)
  3. 3. CI/CD work flow์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ๋“ค
  4. 4. Jenkins๋ฅผ ์ด์šฉํ•œ ๋ฐฐํฌ ๊ณผ์ •
  5. (1) IaC๋ฅผ ๊ฑฐ์น˜์ง€ ์•Š๋Š” ํŒŒ์ดํ”„๋ผ์ธ
  6. (2) IaC๋ฅผ ๊ฑฐ์น˜๋Š” ํŒŒ์ดํ”„๋ผ์ธ
  7. (4) EC2 / VM์— ๋ฐฐํฌ ํŒŒ์ดํ”„๋ผ์ธ
'๐Ÿ›ณ DevOps' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • FEP Server์— ๋Œ€ํ•ด์„œ
DevPoong
DevPoong
๊ฐœ๋ฐœ ๊ณต๋ถ€ ๋ธ”๋กœ๊ทธ
DevPoong
Poong
DevPoong
์ „์ฒด
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ
    • ๐ŸŒ Backend
      • โœˆ๏ธŽ JPA
      • ๐Ÿƒ Spring
    • ๐Ÿ‘ท๐Ÿป Architecture
    • ๐Ÿ›ข๏ธDatabase
    • ๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ Project
      • ๐Ÿ“บ KIOSEK
      • ๐Ÿ“ฉ DevTalk
    • ๐Ÿ›ณ DevOps
      • ๐Ÿ“ก Network
      • Cloud Infra
      • Docker
      • ๐Ÿš Kafka
    • ๐Ÿ“ IDE

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • hexagonal architecture
  • IntelliJ
  • Spring
  • nginx
  • xa datasource
  • 2 phase commit
  • CQS
  • aws
  • ์„ฑ๋Šฅ์ตœ์ ํ™”
  • ํ…Œ์ด๋ธ” ํ’€ ์Šค์บ”
  • ๋Ÿฐ๋˜ํŒŒ์™€ ๊ณ ์ „ํŒŒ
  • real mysql8.0
  • docker-compose.yml
  • GlobalExceptionHandler
  • kafka-sink-connect
  • redis
  • zookeeper
  • Kafka
  • Mysql ๋‚ด์žฅ ํ•จ์ˆ˜
  • count query
  • jwt
  • kafka-source-connect
  • docker
  • Mysql ์—ฐ์‚ฐ์ž
  • PKCS5
  • TID
  • Network
  • ์ธ๋ฑ์Šค ๋ ˆ์ธ์ง€ ์Šค์บ”
  • MySQL
  • EC2

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

hELLO ยท Designed By ์ •์ƒ์šฐ.v4.2.0
DevPoong
CI/CD ๊ทธ๊ฒŒ ๋ญ์•ผ?

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”

๋‹จ์ถ•ํ‚ค

๋‚ด ๋ธ”๋กœ๊ทธ

๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
Q
Q
์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
W
W

๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
E
E
๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
C
C

๋ชจ๋“  ์˜์—ญ

์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
S
S
๋งจ ์œ„๋กœ ์ด๋™
T
T
ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
H
H
๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
Shift + /
โ‡ง + /

* ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.