Agile & Waterfall
Devops
CICD
μ΄κΈ° μννΈμ¨μ΄ κ°λ° λ°©λ²μ κ³ν μ€μ¬μ νλ‘μΈμ€
νμ¬λ?
μννΈμ¨μ΄ λΆμΌκ° λμ΄μ§λ©΄μ μννΈμ¨μ΄ μ¬μ©μ = μΌλ° λμ€ μΌλ‘ νΈλ λκ° λ³ννλ€. κ±°μ λλΆλΆμ μ¬λλ€μ΄ SWλ₯Ό μ¬μ©νλ λμμΌλ‘ λλ©΄μ λΉμ¦λμ€ μ¬μ΄ν΄(μ νμ μλͺ )μ΄ μ§§μμ‘κ³ μ΄μ λ°λΌ SW κ°λ°μ λΆνμ€μ±μ΄ λμμ§κ² λμλ€.
Agile methodology is a practice that helps continuous iteration of development and testing in the software development process.
νλμ΄ λ―Όμ²©ν, λ λ ΅ν, μκ°μ΄ κΈ°λ―Όν, μ¬λΉ λ₯΄κ² κ°λ°νλ κΈ°λ²..
μ μμΌ λ°©λ²λ‘ μ λΉ λ₯΄κ² λ³ννλ μμ₯μμ ν©λ¦¬μ£Όμ λλ ν
μΌλ¬ κ²½μλ°©μμΌλ‘ λλ³λλ κΈ°μ‘΄μ μ±κ³Ό κ΄λ¦¬λ₯Ό λ체ν μ μλ λμμΌλ‘ κ°κ΄λ°κ³ μλ€.
κΈ°ν -> κ°λ° -> μΆμ μ κ°μ κ°λ°μ£ΌκΈ°λ₯Ό μ€νλ¦°νΈ
λΌκ³ νλλ° μ¬λ¬ μ€νλ¦°νΈλ₯Ό κ±°μΉλ©° κ³ κ°μ μꡬμ νκ²½μ λ§κ² κ°μ νλ€.
μ μμΌμ ν΅μ¬μ νλ ₯ + νΌλλ°± μ΄λ€.
μννΈμ¨μ΄λ₯Ό κ°λ°ν μ¬λλ€ μμμμ νλ ₯μ λ§νλ€.
νμ΅μ κ°μ₯ ν° μ μ 쑰건μ νΌλλ°±μ΄λ€. λ΄κ° μ΄λ»κ² κ°λ°μ νκ³ κ³Όμ λ° κ²°κ³Όμ λν νμΈμ ν΅ν΄ νμ΅μ μ§νν΄μΌνλ€. μννΈμ¨μ΄μ λΆνμ€μ±μ΄ λμμλ‘ νμ΅μ μ€μλλ μ¬λΌκ°λ€.
κ·Έλμ Agileμ΄ λ¬΄μμΈκ°?
- νΌλλ°± -> μ¬μ€κ³ -> νΌλλ°± -> μ¬μ€κ³μ λ°©μ
- λͺ©νλ₯Ό μ μνλ μ¬λμ΄ λ¦¬λκ° λλ€ -> λͺ©ν 리λμ½
- 무νλ² νλ²μ (μ§μμ κ°μ ) : μΆμ -> κ°μ -> μΆμ -> κ°μ μ νλ‘μΈμ€
- λ¨μν κ΅μ‘λ§μΌλ‘ λ°λ μ μμ.
- μ¬λμ λ°μκ³Ό λ³νμ μ£Όμ²΄λ‘ λ³΄λ λ°©μ
- How & Whatever
- κ³νμΈμ°κΈ°μ κ³Όλν μκ°κ³Ό λΉμ©μ ν¬μ νμ§ μλλ€.(μ°λ¦¬μ λ€λ₯Έκ±°κ°μ΅λλ€.)
- κΆνμ κ³ κ°μ μ μ μλ μ‘°μ§κ³Ό ꡬμ±μμκ² μλΉλΆλΆ μμνλ€.
- 민첩νλ©΄μλ ν¨κ³Όμ μΈ μμ¬κ²°μ μ΄ μ΄λ£¨μ΄μ§λ€.
- μ λ³΄κ° λͺ¨λμκ² λμ μμ€μΌλ‘ 곡μ λλ€.
- μ μμΌ κ²½μμ κ²°μ½ λΉ λ₯Έμλλ μ λ ΄ν λΉμ©μ λ»νλ κ²μ΄ μλλ€.
νν¬μλ μμμ μλλ‘ νλ₯΄λ©° μλμμ μλ‘ λ€μ κ±°μ¬λ¬ μ¬λΌκ° μ μλ€.
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 modelμ μμλ₯Ό λ°λ₯΄λ νλ‘μ νΈλ μ΄μ λ¨κ³κ° μλ£ λμ΄μΌ λ€μ λ¨κ³λ₯Ό κ°λ°νλ€.
- 체κ³νλ λ¬Έμλ₯Ό λ°νμΌλ‘ μμ μ μΌλ‘ μ§νν¨.
- μ¬μ©μμμ μμ¬μν΅μ΄ μ μ.
- μꡬμ¬ν λΆμκ³Ό νλΉμ± κ²ν μμ λ§μ μκ°μ μμνλ€.
- λ€μν κ°λ³ μ 무 μμ€ν μ μ¬μ©νλ€.
- κ΄λ¦¬κ° μ©μ΄νλ€.
- λͺ©νλ¬Όμ΄ κ³Όμ μ΄ νλ°λΆμ κ°μνλλ νΉμ§μ΄ μμ
λΉκ΅ | Agile | Waterfall |
---|---|---|
+ | μ¬μ©μ μ€μ¬μ νλ‘μΈμ€μ΄λ€. μ¬μ©μκ° λ§€ λ¨κ³λ§λ€ μ§μμ μΌλ‘ μ°λ£¨λ μ μμ. | κ°μ₯ κ΄λ¦¬νκΈ° μ¬μ΄ λͺ¨λΈμ€μ νλμ΄λ€. μλνλ©΄ waterfallμ νΉμ±μ κ°λ¨κ³λ₯Ό μΈλΆμ μΌλ‘ μ λ¬νλ©° reviewκ³Όμ μ΄ μκΈ° λλ¬Έμ΄λ€. |
+ | agile λ°©λ²λ‘ μ μ΄μ©νλ νμ λͺ νν λκΈ°κ° μλ€. | λͺ¨λ νλ‘μΈμ€μ κ²°κ³Όλ λ¬Έμνλμ΄ μλ€. |
+ | agileν μννΈμ¨μ΄ κ°λ° λ°©λ²λ‘ μ μμ§μ κ°λ°μ μ μ§ν μ μκ² νλ€. | μλ‘μ΄ νμμ΄ μλ μ½κ² μ μν μ μλ€. |
+ | μκ·λͺ¨ νλ€μ΄ μ¬λ¬κ³Όμ λ₯Ό κ°κ° ν λΉλ°μ μ²λ¦¬ κ°λ₯ | μꡬμ¬νμ΄ μ μλμ΄ μκΈ° λλ¬Έμ μ€ννκΈ°κ° μμνκ³ λͺ©νλ₯Ό μμ£Ό λ³κ²½νμ§ μμλ λλ€. |
+ | κ°λ°κ³Όμ μ€μ μ μνκ² μ ν λ³κ²½ κ°λ₯ | νμν μμ°κ³Ό μμμ΄ μ΄κΈ°μ νμ λκΈ° λλ¬Έμ μμκ²°κ³Όμ 리μ€ν¬λ₯Ό ν΅μ νκΈ° μ΄λ ΅λ€ |
- | λΉ λ₯Έ λ°λ³΅ μμ μ μ΅μν μλ ¨λ μ¬λμ΄ μκ΅¬λ¨ | κ°λ°μλ λλκ³ μ μ°μ±μ΄ λΆμ‘±ν¨ |
- | μλ§μ λ³κ²½μ¬νμ΄ μμ μ μμΌλ―λ‘ λ²κ±°λ‘μ λ°μ κ°λ₯ | κ°λ° μꡬμ¬νμ΄ μ΄κΈ°μ μ ν΄μ§κΈ° λλ¬Έμ λ³κ²½μ΄ μμ λ‘μ§ λͺ»νλ€. |
μ ν©ν μ‘°μ§ | κ³ νμ§μ κ²°κ³Όλ¬Όκ³Ό μ§μμ κ°μ μ μ΄μ μ λ§μΆ μ‘°μ§ | μμ°¨μ μΈ νλ‘μ νΈ νμλΌμΈ μ¬μ νμ μμ°μ΄ νμνν |
μ ν©νμ‘°μ§ | ν¬κ³ 볡μ‘ν νμ¬λ€μ΄ νλ‘μΈμ€λ₯Ό κ°μνν¨μΌλ‘μ¨ λ³νμ μ μλμΌ νκ³ μ ν λ | κ°λ°μμ λ³κ²½μ΄λ 리μ€ν¬μ λ λ―Όκ°ν ν |
μ ν©ν μ‘°μ§ | κ²°κ³Όλ¬Όμ λν΄ λΉ λ₯Έ νΌλλ°±μ΄ νμν ν | μꡬμ¬νμ΄ κ°λ¨ν ν, νμλΌμΈμ΄ κΈ΄ νλ‘μ νΈ |
μ 리νλ©΄ agileλͺ¨λΈμ μ¬μ©νκ² λ μ΄μ λ waterfall λͺ¨λΈμ΄ μν°λ¦¬λΌλ κ²μ λ°κ²¬ν λ€μμ κ°μ ν΄λ³΄λ €λ μλμ΄κ³ μλμ λ°©λ²λ‘ μ΄ μλͺ»λ κ²μ΄λ―λ‘ agile λν νκ³μ μ΄ μ‘΄μ¬νλ€. κ·Έμ λν μ΄μ λ μ² νμ μΈ λ°©λ²λ‘ μ μ°Ύμ§ λͺ»ν΄μκ° μλλΌ λΉμμ κ°λ° κΈ°μ μ λ¨Όμ μΌλμ λκ³ κ°λ° λ°©λ²λ‘ μ ꡬμμ κ°μΆ κ²μ λΆκ³Όνλ€.(κ°λ° κΈ°μ -> κ°λ° λ°©λ²λ‘ ) κ²°λ‘ μ ꡬν κΈ°μ μ κ·Όκ±°λ‘ κ°λ° λ°©λ²λ‘ μ λ§λλ κ²μ μν°λ¦¬μ΄λ€.
Development + operations => DevOps
μννΈμ¨μ΄ μ νκ³Ό μλΉμ€λ₯Ό λΉ λ₯Έ μκ°μ κ°λ° λ° λ°°ν¬νλ κ²μ΄λ€. μννΈμ¨μ΄ μ νμ΄λ μλΉμ€λ₯Ό μλ§μ μκΈ°μ μΆμνκΈ° μν΄ κ°λ°κ³Ό μ΄μμ΄ μνΈμμ‘΄μ μΌλ‘ λμν΄μΌ νλ€λ μλ―Έλ‘ λ§μ΄ μ¬μ©νκ³ μλ€. DevOpsμ κ°λ μ μ μμΌ κΈ°λ²κ³Ό CICD κ°λ κ³Ό μ°κ΄μ΄ μλ€. μ μμΌ κΈ°λ²μ μ€μ§μ μΈ μ½λ©μ κΈ°λ°μΌλ‘ μΌμ ν μ£ΌκΈ°μ λ°λΌ μ§μμ μΌλ‘ νλ‘ν νμ μ νμ±νκ³ , νμν μꡬμ¬νμ νμ νλ©° μ΄μ λ°λΌ μ¦μ μμ μ¬νμ μ μ©νμ¬ κ²°κ³Όμ μΌλ‘ νλμ ν° μννΈμ¨μ΄λ₯Ό κ°λ°νλ λ°©λ²μ΄κ³ μ§μμ ν΅ν©μ ν΅ν© μμ μ μ΄κΈ°λΆν° κ³μ μνν΄μ μ§μμ μΌλ‘ μννΈμ¨μ΄μ νμ§μ μ΄λ₯Ό μ μ©νλ κ²μ΄λ€.
- Continuous Development
- Version control - git, SVN
- Automatic builder/packager to executavles - Maven, Ant, Gradle
- Continuous Testing - Selenium
- Continuous Deployment - μ€ν νμΌμ νΉμ μλ² (testing or production server)μ λ°°ν¬
- Containerization (vs. VM) - Docker + Docker Swarm
- Configuration management - puppet, Ansible
- Continuous Monitoring - λ€νΈμν¬ λͺ¨λν°λ§κ³Ό λ°°ν¬λ μννΈμ¨μ΄μ λ²κ·Έ λ° μ¬μ©μλ‘λΆν°μ feedback μμ§ - Nagios
- Continuous Integration - μ λͺ¨λ SW lifecycleμ λꡬλ€μ μ°ν©νκ³ μ°μμ μ΄κ³ μλμ μΌλ‘ κ° μμ
μ΄ μνλλλ‘ ν¨, λͺ¨λ μ λꡬλ€κ³Ό μ°λ
- Jenkins (300κ° μ΄μμ plug-in μ‘΄μ¬)
- Kubernetes - Docker container orchestration manager (vs. docker swarm)
CICD νμ΄νλΌμΈμ μ λ²μ μ μννΈμ¨μ΄λ₯Ό μ 곡νκΈ° μν΄ μνν΄μΌ ν μΌλ ¨μ λ¨κ»μ λλ€. μ§μμ ν΅ν©/μ§μμ λ°°ν¬(CI/CD) νμ΄νλΌμΈμ DevOps λ°©μμ ν΅ν΄ λ ν¨κ³Όμ μΌλ‘ μννΈμ¨μ΄λ₯Ό μ 곡νλ λ° μ΄μ μ λ§μΆ λ°©λ²μ΄λ€.
CI/CDλ κΈ°μ μ΄ μλλ€. κ°λ° ν λ¬Ένμ μΈ κ²μ΄λ©° CICD νμ΄νλΌμΈμ λ μμ£Ό λ μ λ’°μ± λμ μμ λ μ½λλ₯Ό deployν μ μλλ‘ DevOps νμ΄ SWλ₯Ό ꡬννλ λ°©λ²λ‘ μΌλ‘μ νμ¬λ‘μλ κ°μ₯ μΆκ΅¬λλ μ€μ κ°λ° νμμ΄λ©° ν λ¬Ένμ΄λ€. DevOps λꡬλ₯Ό μ¬μ©νλ©΄ CI/CDλ₯Ό μννλ κ²κ³Ό κ°λ€.
νλμ μΈ μ ν리μΌμ΄μ κ°λ°μμλ μ¬λ¬ κ°λ°μλ€μ΄ κ°κΈ° λ€λ₯Έ κΈ°λ₯μ λμμ μμ νκΈ°λ₯Ό μνλ€. νΉμ ν λ μ μ ν΄μ λͺ¨λ μμ€μ½λλ₯Ό λ³ν©νκ² λλ©΄ κ²°κ³Όμ μΌλ‘ μκ° μλͺ¨κ° ν¬λ©° λ 립μ μΌλ‘ μμ νλ κ°λ°μκ° μ ν리μΌμ΄μ λ³κ²½μ¬νμ μ μ©ν λ λ€λ₯Έ κ°λ°μκ° λμμ μ μ©νλ λ³κ²½μ¬νκ³Ό μΆ©λ κ°λ₯μ±μ΄ μλ€.
κ°λ°μλ€μ΄ μ ν리μΌμ΄μ μ μ μ©ν λ³κ²½μ¬νμ΄ λ²κ·Έν μ€νΈλ₯Ό κ±°μ³ λ ν¬μ§ν 리(Github)μ μ€μκ° μλ μ λ‘λ λλ κ²μ λ»νκ³ μ΄μνμ μ΄ λ ν¬μ§ν 리μμ μ ν리μΌμ΄μ μ μ€μκ° νλ‘λμ νκ²½μΌλ‘ λ°°ν¬ν μ μλ€.
- Agileκ³Ό waterfall λ°©λ²λ‘ λ°©μ(νΉμ§)μ μ€λͺ ν΄μ£ΌμΈμ
- Devopsλ 무μμΈκ°μ? CICDμ μ°κ²°ν΄μ μ€λͺ ν΄μ£ΌμΈμ.
2-1. μ) continuous integraionμ μ¬μ©λλ ν΄μ 무μμΈκ°μ?