Skip to content

Latest commit

Β 

History

History
157 lines (105 loc) Β· 9.75 KB

Agile_Waterfall_CICD_Devops.md

File metadata and controls

157 lines (105 loc) Β· 9.75 KB

πŸ”ƒ Agile&Waterfall+CICD+Devops

πŸ“š table of contents

Agile & Waterfall

Devops

CICD


πŸ”ƒ Agile & Waterfall

초기 μ†Œν”„νŠΈμ›¨μ–΄ 개발 방법은 κ³„νš μ€‘μ‹¬μ˜ ν”„λ‘œμ„ΈμŠ€

ν˜„μž¬λŠ”?

μ†Œν”„νŠΈμ›¨μ–΄ λΆ„μ•Όκ°€ λ„“μ–΄μ§€λ©΄μ„œ μ†Œν”„νŠΈμ›¨μ–΄ μ‚¬μš©μž = 일반 λŒ€μ€‘ 으둜 νŠΈλ Œλ“œκ°€ λ³€ν™”ν–ˆλ‹€. 거의 λŒ€λΆ€λΆ„μ˜ μ‚¬λžŒλ“€μ΄ SWλ₯Ό μ‚¬μš©ν•˜λŠ” λŒ€μƒμœΌλ‘œ λ˜λ©΄μ„œ λΉ„μ¦ˆλ‹ˆμŠ€ 사이클(μ œν’ˆμ˜ 수λͺ…)이 μ§§μ•„μ‘Œκ³  이에 따라 SW 개발의 λΆˆν™•μ‹€μ„±μ΄ λ†’μ•„μ§€κ²Œ λ˜μ—ˆλ‹€.


Agile

Agile methodology is a practice that helps continuous iteration of development and testing in the software development process.

행동이 λ―Όμ²©ν•œ, λ‚ λ ΅ν•œ, 생각이 κΈ°λ―Όν•œ, 재빠λ₯΄κ²Œ κ°œλ°œν•˜λŠ” 기법..

agile

μ• μžμΌ 방법둠은 λΉ λ₯΄κ²Œ λ³€ν™”ν•˜λŠ” μ‹œμž₯μ—μ„œ ν•©λ¦¬μ£Όμ˜ λ˜λŠ” ν…ŒμΌλŸ¬ κ²½μ˜λ°©μ‹μœΌλ‘œ λŒ€λ³€λ˜λŠ” 기쑴의 μ„±κ³Ό 관리λ₯Ό λŒ€μ²΄ν•  수 μžˆλŠ” λŒ€μ•ˆμœΌλ‘œ 각광받고 μžˆλ‹€. 기획 -> 개발 -> μΆœμ‹œ 와 같은 개발주기λ₯Ό μŠ€ν”„λ¦°νŠΈλΌκ³  ν•˜λŠ”λ° μ—¬λŸ¬ μŠ€ν”„λ¦°νŠΈλ₯Ό 거치며 고객의 μš”κ΅¬μ™€ ν™˜κ²½μ— 맞게 κ°œμ„ ν•œλ‹€.

μ• μžμΌμ˜ 핡심은 ν˜‘λ ₯ + ν”Όλ“œλ°± 이닀.

ν˜‘λ ₯

μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό κ°œλ°œν•œ μ‚¬λžŒλ“€ μ•ˆμ—μ„œμ˜ ν˜‘λ ₯을 λ§ν•œλ‹€.

ν”Όλ“œλ°±

ν•™μŠ΅μ˜ κ°€μž₯ 큰 μ „μ œμ‘°κ±΄μ€ ν”Όλ“œλ°±μ΄λ‹€. λ‚΄κ°€ μ–΄λ–»κ²Œ κ°œλ°œμ„ ν–ˆκ³  κ³Όμ • 및 결과에 λŒ€ν•œ 확인을 톡해 ν•™μŠ΅μ„ μ§„ν–‰ν•΄μ•Όν•œλ‹€. μ†Œν”„νŠΈμ›¨μ–΄μ˜ λΆˆν™•μ‹€μ„±μ΄ λ†’μ„μˆ˜λ‘ ν•™μŠ΅μ˜ μ€‘μš”λ„λŠ” μ˜¬λΌκ°„λ‹€.

κ·Έλž˜μ„œ Agile이 무엇인가?

Agile λ°©λ²•λ‘ μ˜ νŠΉμ§•

  • ν”Όλ“œλ°± -> μž¬μ„€κ³„ -> ν”Όλ“œλ°± -> μž¬μ„€κ³„μ˜ 방식
  • λͺ©ν‘œλ₯Ό μ œμ‹œν•˜λŠ” μ‚¬λžŒμ΄ 리더가 λœλ‹€ -> λͺ©ν‘œ 리더쉽
  • λ¬΄ν•œλ² νƒ€λ²„μ „(지속적 κ°œμ„ ) : μΆœμ‹œ -> κ°œμ„  -> μΆœμ‹œ -> κ°œμ„ μ˜ ν”„λ‘œμ„ΈμŠ€
  • λ‹¨μˆœνžˆ ꡐ윑만으둜 λ°”λ€” 수 μ—†μŒ.
  • μ‚¬λžŒμ„ λ°œμƒκ³Ό λ³€ν™”μ˜ 주체둜 λ³΄λŠ” 방식
  • How & Whatever

Agile μ‘°μ§λ¬Έν™”μ˜ νŠΉμ§•

  • κ³„νšμ„Έμš°κΈ°μ— κ³Όλ„ν•œ μ‹œκ°„κ³Ό λΉ„μš©μ„ νˆ¬μž…ν•˜μ§€ μ•ŠλŠ”λ‹€.(μš°λ¦¬μ™€ λ‹€λ₯Έκ±°κ°™μŠ΅λ‹ˆλ‹€.)
  • κΆŒν•œμ„ 고객접점에 μžˆλŠ” 쑰직과 κ΅¬μ„±μ›μ—κ²Œ 상당뢀뢄 μœ„μž„ν•œλ‹€.
  • λ―Όμ²©ν•˜λ©΄μ„œλ„ 효과적인 μ˜μ‚¬κ²°μ •μ΄ 이루어진닀.
  • 정보가 λͺ¨λ‘μ—κ²Œ 높은 μˆ˜μ€€μœΌλ‘œ κ³΅μœ λœλ‹€.
  • μ• μžμΌ κ²½μ˜μ€ κ²°μ½” λΉ λ₯Έμ†λ„λ‚˜ μ €λ ΄ν•œ λΉ„μš©μ„ λœ»ν•˜λŠ” 것이 μ•„λ‹ˆλ‹€.

Waterfall

ν­ν¬μˆ˜λŠ” μœ„μ—μ„œ μ•„λž˜λ‘œ 흐λ₯΄λ©° μ•„λž˜μ—μ„œ μœ„λ‘œ λ‹€μ‹œ 거슬러 올라갈 수 μ—†λ‹€.

Waterfall Model followed in the sequential order, and so project development team only moves to next phase of development or testing if the previous step completed successfully.

waterfall

μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό κ°œλ°œν•˜λŠ”λ° μžˆμ–΄μ„œ, 각 단계가 μœ„μ—μ„œ μ•„λž˜λ‘œ 물이 λ–¨μ–΄μ§€λŠ” κ²ƒμ²˜λŸΌ 순차적으둜 μ§„ν–‰λ˜λ©° μ™„λ£Œλœ λ‹¨κ³„μ—μ„œλŠ” λ‹€μ‹œ 처음으둜 되돌리기 μ–΄λ €μš΄ 방법둠이닀. Waterfall 방법둠은 크게 μš”κ΅¬μ‚¬ν•­λΆ„μ„->섀계->κ΅¬ν˜„->ν…ŒμŠ€νŠΈ->μœ μ§€λ³΄μˆ˜ 둜 λ‚˜λˆŒ 수 μžˆλ‹€. ν­ν¬μˆ˜λΌλŠ” 말 κ·ΈλŒ€λ‘œ ν­ν¬μ—μ„œ 물이 λ–¨μ–΄μ§€λŠ” κ²ƒμ²˜λŸΌ μœ„μ—μ„œ μ•„λž˜ λ‹¨κ³„λ‘œ 순차적으둜 각 단계가 μ§„ν–‰ λœλ‹€. μ΄λ•Œ μ—¬λŸ¬ 단계가 λ³‘λ ¬μ μœΌλ‘œ μ§„ν–‰λœλ‹€κ±°λ‚˜ μ—­μœΌλ‘œ μ§„ν–‰λ˜λŠ” κ²½μš°λŠ” μ—†λ‹€. λ˜ν•œ 단계가 λ‚˜λˆ μ Έ 있기 λ•Œλ¬Έμ— waterfall model의 μˆœμ„œλ₯Ό λ”°λ₯΄λŠ” ν”„λ‘œμ νŠΈλŠ” 이전 단계가 μ™„λ£Œ λ˜μ–΄μ•Ό λ‹€μŒ 단계λ₯Ό κ°œλ°œν•œλ‹€.

Waterfall λ°©λ²•λ‘ μ˜ νŠΉμ§•

  • μ²΄κ³„ν™”λœ λ¬Έμ„œλ₯Ό λ°”νƒ•μœΌλ‘œ μ•ˆμ •μ μœΌλ‘œ 진행함.
  • μ‚¬μš©μžμ™€μ˜ μ˜μ‚¬μ†Œν†΅μ΄ 적음.
  • μš”κ΅¬μ‚¬ν•­ 뢄석과 타당성 κ²€ν† μ—μ„œ λ§Žμ€ μ‹œκ°„μ„ μ†Œμš”ν•œλ‹€.
  • λ‹€μ–‘ν•œ κ°œλ³„ 업무 μ‹œμŠ€ν…œμ„ μ‚¬μš©ν•œλ‹€.
  • 관리가 μš©μ΄ν•˜λ‹€.
  • λͺ©ν‘œλ¬Όμ΄ 과정이 ν›„λ°˜λΆ€μ— κ°€μ‹œν™”λ˜λŠ” νŠΉμ§•μ΄ 있음

Agile Vs. Waterfall +/-

비ꡐ Agile Waterfall
+ μ‚¬μš©μž μ€‘μ‹¬μ˜ ν”„λ‘œμ„ΈμŠ€μ΄λ‹€. μ‚¬μš©μžκ°€ λ§€ λ‹¨κ³„λ§ˆλ‹€ μ§€μ†μ μœΌλ‘œ 연루될 수 있음. κ°€μž₯ κ΄€λ¦¬ν•˜κΈ° μ‰¬μš΄ λͺ¨λΈμ€‘에 ν•˜λ‚˜μ΄λ‹€. μ™œλƒν•˜λ©΄ waterfall의 νŠΉμ„±μƒ 각단계λ₯Ό μ„ΈλΆ€μ μœΌλ‘œ μ „λ‹¬ν•˜λ©° review과정이 있기 λ•Œλ¬Έμ΄λ‹€.
+ agile 방법둠을 μ΄μš©ν•˜λŠ” νŒ€μ€ λͺ…ν™•ν•œ 동기가 μžˆλ‹€. λͺ¨λ“  ν”„λ‘œμ„ΈμŠ€μ™€ κ²°κ³ΌλŠ” λ¬Έμ„œν™”λ˜μ–΄ μžˆλ‹€.
+ agileν•œ μ†Œν”„νŠΈμ›¨μ–΄ 개발 방법둠은 μ–‘μ§ˆμ˜ κ°œλ°œμ„ μœ μ§€ν•  수 있게 ν•œλ‹€. μƒˆλ‘œμš΄ νŒ€μ›μ΄ 와도 μ‰½κ²Œ 적응할 수 μžˆλ‹€.
+ μ†Œκ·œλͺ¨ νŒ€λ“€μ΄ μ—¬λŸ¬κ³Όμ œλ₯Ό 가각 ν• λ‹Ήλ°›μ•„ 처리 κ°€λŠ₯ μš”κ΅¬μ‚¬ν•­μ΄ μ •μ˜λ˜μ–΄ 있기 λ•Œλ¬Έμ— μ‹€ν–‰ν•˜κΈ°κ°€ μˆ˜μ›”ν•˜κ³  λͺ©ν‘œλ₯Ό 자주 λ³€κ²½ν•˜μ§€ μ•Šμ•„λ„ λœλ‹€.
+ κ°œλ°œκ³Όμ •μ€‘μ— μ‹ μ†ν•˜κ²Œ μ œν’ˆ λ³€κ²½ κ°€λŠ₯ ν•„μš”ν•œ μ˜ˆμ‚°κ³Ό μžμ›μ΄ μ΄ˆκΈ°μ— ν™•μ •λ˜κΈ° λ•Œλ¬Έμ— μ˜ˆμƒκ²°κ³Όμ™€ 리슀크λ₯Ό ν†΅μ œν•˜κΈ° μ–΄λ ΅λ‹€
- λΉ λ₯Έ 반볡 μž‘μ—…μ— μ΅μˆœν•œ μˆ™λ ¨λœ μ‚¬λžŒμ΄ μš”κ΅¬λ¨ κ°œλ°œμ†λ„ 더디고 μœ μ—°μ„±μ΄ 뢀쑱함
- μˆ˜λ§Žμ€ 변경사항이 μžˆμ„ 수 μžˆμœΌλ―€λ‘œ λ²ˆκ±°λ‘œμ›€ λ°œμƒ κ°€λŠ₯ 개발 μš”κ΅¬μ‚¬ν•­μ΄ μ΄ˆκΈ°μ— μ •ν•΄μ§€κΈ° λ•Œλ¬Έμ— 변경이 μžμœ λ‘­μ§€ λͺ»ν•˜λ‹€.
μ ν•©ν•œ 쑰직 κ³ ν’ˆμ§ˆμ˜ κ²°κ³Όλ¬Όκ³Ό 지속적 κ°œμ„ μ— μ΄ˆμ μ„ 맞좘 쑰직 순차적인 ν”„λ‘œμ νŠΈ νƒ€μž„λΌμΈ 사전 ν™•μ • μ˜ˆμ‚°μ΄ ν•„μš”ν•œνŒ€
μ ν•©ν•œμ‘°μ§ 크고 λ³΅μž‘ν•œ νšŒμ‚¬λ“€μ΄ ν”„λ‘œμ„ΈμŠ€λ₯Ό κ°„μ†Œν™”ν•¨μœΌλ‘œμ¨ 변화에 μ‹ μ†λŒ•μœΌ ν•˜κ³ μž ν•  λ•Œ κ°œλ°œμƒμ˜ λ³€κ²½μ΄λ‚˜ λ¦¬μŠ€ν¬μ— 덜 λ―Όκ°ν•œ νŒ€
μ ν•©ν•œ 쑰직 결과물에 λŒ€ν•΄ λΉ λ₯Έ ν”Όλ“œλ°±μ΄ ν•„μš”ν•œ νŒ€ μš”κ΅¬μ‚¬ν•­μ΄ κ°„λ‹¨ν•œ νŒ€, νƒ€μž„λΌμΈμ΄ κΈ΄ ν”„λ‘œμ νŠΈ

μ •λ¦¬ν•˜λ©΄ agileλͺ¨λΈμ„ μ‚¬μš©ν•˜κ²Œ 된 μ΄μœ λŠ” waterfall λͺ¨λΈμ΄ μ—‰ν„°λ¦¬λΌλŠ” 것을 λ°œκ²¬ν•œ λ‹€μŒμ— κ°œμ„ ν•΄λ³΄λ €λŠ” μ‹œλ„μ΄κ³  μ›λž˜μ˜ 방법둠이 잘λͺ»λœ κ²ƒμ΄λ―€λ‘œ agile λ˜ν•œ ν•œκ³„μ μ΄ μ‘΄μž¬ν•œλ‹€. 그에 λŒ€ν•œ μ΄μœ λŠ” 철학적인 방법둠을 μ°Ύμ§€ λͺ»ν•΄μ„œκ°€ μ•„λ‹ˆλΌ λ‹Ήμ‹œμ˜ 개발 κΈ°μˆ μ„ λ¨Όμ € 염두에 두고 개발 방법둠을 ꡬ색을 κ°–μΆ˜ 것에 λΆˆκ³Όν•˜λ‹€.(개발 기술 -> 개발 방법둠) 결둠은 κ΅¬ν˜„ κΈ°μˆ μ„ 근거둜 개발 방법둠을 λ§Œλ“œλŠ” 것은 엉터리이닀.

πŸ”ƒ DevOps & CICD

Devops

Development + operations => DevOps

μ†Œν”„νŠΈμ›¨μ–΄ μ œν’ˆκ³Ό μ„œλΉ„μŠ€λ₯Ό λΉ λ₯Έ μ‹œκ°„μ— 개발 및 λ°°ν¬ν•˜λŠ” 것이닀. μ†Œν”„νŠΈμ›¨μ–΄ μ œν’ˆμ΄λ‚˜ μ„œλΉ„μŠ€λ₯Ό μ•Œλ§žμ€ μ‹œκΈ°μ— μΆœμ‹œν•˜κΈ° μœ„ν•΄ 개발과 운영이 μƒν˜Έμ˜μ‘΄μ μœΌλ‘œ λŒ€μ‘ν•΄μ•Ό ν•œλ‹€λŠ” 의미둜 많이 μ‚¬μš©ν•˜κ³  μžˆλ‹€. DevOps의 κ°œλ…μ€ μ• μžμΌ 기법과 CICD κ°œλ…κ³Ό 연관이 μžˆλ‹€. μ• μžμΌ 기법은 μ‹€μ§ˆμ μΈ 코딩을 기반으둜 μΌμ •ν•œ 주기에 따라 μ§€μ†μ μœΌλ‘œ ν”„λ‘œν† νƒ€μž…μ„ ν˜•μ„±ν•˜κ³ , ν•„μš”ν•œ μš”κ΅¬μ‚¬ν•­μ„ νŒŒμ•…ν•˜λ©° 이에 따라 μ¦‰μ‹œ μˆ˜μ •μ‚¬ν•­μ„ μ μš©ν•˜μ—¬ 결과적으둜 ν•˜λ‚˜μ˜ 큰 μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό κ°œλ°œν•˜λŠ” 방법이고 지속적 톡합은 톡합 μž‘μ—…μ„ μ΄ˆκΈ°λΆ€ν„° 계속 μˆ˜ν–‰ν•΄μ„œ μ§€μ†μ μœΌλ‘œ μ†Œν”„νŠΈμ›¨μ–΄μ˜ ν’ˆμ§ˆμ œμ–΄λ₯Ό μ μš©ν•˜λŠ” 것이닀.

devops

How DevOps Works?

  1. Continuous Development
    • Version control - git, SVN
    • Automatic builder/packager to executavles - Maven, Ant, Gradle
  2. Continuous Testing - Selenium
  3. Continuous Deployment - μ‹€ν–‰ νŒŒμΌμ„ νŠΉμ • μ„œλ²„ (testing or production server)에 배포
    • Containerization (vs. VM) - Docker + Docker Swarm
    • Configuration management - puppet, Ansible
  4. Continuous Monitoring - λ„€νŠΈμ›Œν¬ λͺ¨λ‹ˆν„°λ§κ³Ό 배포된 μ†Œν”„νŠΈμ›¨μ–΄μ˜ 버그 및 μ‚¬μš©μžλ‘œλΆ€ν„°μ˜ feedback μˆ˜μ§‘ - Nagios
  5. Continuous Integration - μœ„ λͺ¨λ“  SW lifecycle의 도ꡬ듀을 μ—°ν•©ν•˜κ³  연속적이고 μžλ™μ μœΌλ‘œ 각 μž‘μ—…μ΄ μˆ˜ν–‰λ˜λ„λ‘ 함, λͺ¨λ“  μœ„ 도ꡬ듀과 연동
    • Jenkins (300개 μ΄μƒμ˜ plug-in 쑴재)
    • Kubernetes - Docker container orchestration manager (vs. docker swarm)

CICD

CICD νŒŒμ΄ν”„λΌμΈμ€ μƒˆ λ²„μ „μ˜ μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό μ œκ³΅ν•˜κΈ° μœ„ν•΄ μˆ˜ν–‰ν•΄μ•Ό ν•  일련의 λ‹¨κ»˜μž…λ‹ˆλ‹€. 지속적 톡합/지속적 배포(CI/CD) νŒŒμ΄ν”„λΌμΈμ€ DevOps 방식을 톡해 더 효과적으둜 μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό μ œκ³΅ν•˜λŠ” 데 μ΄ˆμ μ„ 맞좘 방법이닀.

devops

CI/CDλŠ” 기술이 μ•„λ‹ˆλ‹€. 개발 νŒ€ 문화적인 것이며 CICD νŒŒμ΄ν”„λΌμΈμ€ 더 자주 더 μ‹ λ’°μ„± 높은 μˆ˜μ •λœ μ½”λ“œλ₯Ό deployν•  수 μžˆλ„λ‘ DevOps νŒ€μ΄ SWλ₯Ό κ΅¬ν˜„ν•˜λŠ” λ°©λ²•λ‘ μœΌλ‘œμ„œ ν˜„μž¬λ‘œμ„œλŠ” κ°€μž₯ μΆ”κ΅¬λ˜λŠ” μ‹€μ œ 개발 ν–‰μœ„μ΄λ©° νŒ€ 문화이닀. DevOps 도ꡬλ₯Ό μ‚¬μš©ν•˜λ©΄ CI/CDλ₯Ό μˆ˜ν–‰ν•˜λŠ” 것과 κ°™λ‹€.

CI, Continuous Integration 지속적인 톡합

ν˜„λŒ€μ μΈ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ κ°œλ°œμ—μ„œλŠ” μ—¬λŸ¬ κ°œλ°œμžλ“€μ΄ 각기 λ‹€λ₯Έ κΈ°λŠ₯을 λ™μ‹œμ— μž‘μ—…ν•˜κΈ°λ₯Ό μ›ν•œλ‹€. νŠΉμ •ν•œ 날을 μ •ν•΄μ„œ λͺ¨λ“  μ†ŒμŠ€μ½”λ“œλ₯Ό λ³‘ν•©ν•˜κ²Œ 되면 결과적으둜 μ‹œκ°„ μ†Œλͺ¨κ°€ 크며 λ…λ¦½μ μœΌλ‘œ μž‘μ—…ν•˜λŠ” κ°œλ°œμžκ°€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 변경사항을 μ μš©ν•  λ•Œ λ‹€λ₯Έ κ°œλ°œμžκ°€ λ™μ‹œμ— μ μš©ν•˜λŠ” 변경사항과 좩돌 κ°€λŠ₯성이 μžˆλ‹€.

CD, Continuous Deployment & Continuous Delivery 지속적인 배포

κ°œλ°œμžλ“€μ΄ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— μ μš©ν•œ 변경사항이 λ²„κ·Έν…ŒμŠ€νŠΈλ₯Ό 거쳐 λ ˆν¬μ§€ν† λ¦¬(Github)에 μ‹€μ‹œκ°„ μžλ™ μ—…λ‘œλ“œ λ˜λŠ” 것을 λœ»ν•˜κ³  μš΄μ˜νŒ€μ€ 이 λ ˆν¬μ§€ν† λ¦¬μ—μ„œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ‹€μ‹œκ°„ ν”„λ‘œλ•μ…˜ ν™˜κ²½μœΌλ‘œ 배포할 수 μžˆλ‹€.



πŸ“š μ°Έκ³ 

agile

agile&waterfall

⁉️ λ©΄μ ‘ μ˜ˆμƒ 질문

  1. Agileκ³Ό waterfall 방법둠 방식(νŠΉμ§•)을 μ„€λͺ…ν•΄μ£Όμ„Έμš”
  1. Devopsλž€ λ¬΄μ—‡μΈκ°€μš”? CICD와 μ—°κ²°ν•΄μ„œ μ„€λͺ…ν•΄μ£Όμ„Έμš”.

2-1. 예) continuous integraion에 μ‚¬μš©λ˜λŠ” νˆ΄μ€ λ¬΄μ—‡μΈκ°€μš”?