Yo-mi 2023. 8. 16. 20:52
Design(& Development) Process

 

1. Software development paradigm

과거에는 소프트웨어를 직접 팔기 위해 개발하였다. 즉 소프트웨어 자체가 수익의 목표였다.

ex) Microsoft Windows & Office, Hancom Hangul Word Processor, Adobe Photoshop, Packaged Game

또한 소프트웨어를 개발하는 데 긴 시간이 걸렸고 많은 사람과 돈을 요구했으며 언제까지 완성할 지에 대한 데드라인이 엄격했다.

 

오늘날은 서비스를 위해 도구적 관점으로 소프트웨어를 개발한다.

ex) Google & Naver Search Service, Free Game with Pay Items, Daum KaKao & Line Instant Messenger, Ad-based Free Services

또한 오늘날 서비스는 가능한 빨리, 제한된 인력과 돈으로 시장 요구를 충족시키며 개발된다.

 

2. Waterfall process

Waterfall Process는 위에서 아래로 흐르기 때문에 설계가 잘못되면 다 꼬인다. 따라서 최대한 앞쪽에서 문제가 없도록 노력해야 한다.

선행 단계가 완벽할 때는 좋다. 하지만 서비스가 중심인 오늘날에는 시장, 고객의 마음이 바뀌는 경우가 허다하다. 

따라서 오늘날에는 Waterfall Process는 적합하지 않다.

 

3. Agile

"어떻게 하면 소프트웨어를 잘 만들어낼 수 있을까?"에 대한 고민을 하여 만들어낸 소프트웨어 개발 방법이자 철학, 규정, Manifesto이다.

 

공정과 도구보다 개인과 상호작용
포괄적인 문서보다 작동하는 소프트웨어
계약 협상보다 고객과의 협력
계획을 따르기보다 변화에 대응하기

 

Agile Manifesto 12 Principles (9개로 생략)

1. 상사가 아닌 고객을 만족시켜라.

2. 변화를 거부하지 말고 받아들여라.

3. 문서가 아닌 소프트웨어로 진행사항을 보여줘라.

4. 개발자가 아닌 사람들과도 대화를 많이 해라.

5. 프로젝트를 동기부여가 된 개인들로 구성해라.

6. 얼굴을 보며 대화하는 것이 가장 효과적이다.

7. 작동하는 소프트웨어로 중간 과정을 보여줘라.

8. 스폰서, 개발자, 사용자들이 유기적으로 연결되어 있어야 한다.

9. 끊임 없이 스스로 발전 시켜라. 자기 분야에 관심을 가져야 한다.

 

4. Scrum

Scrum은 에자일이라는 철학을 반영한 방법론이다.

Product가 가져야할 것들을 Product Backlog에서 명시한 후 우선 순위대로 여러 Sprint로 쪼갠다.

하루에 한번씩 모여 어제 해야 할 것들을 이뤘는 지, 새로 생긴 이슈가 무엇인 지 등을 이야기하는 Daily Scrum이라는 것이 존재한다. 이로써 시장의 반응을 빠르게 받아들일 수 있다.

제일 중요한 것은 1~4주 마다 하는 Sprint 과정을 통해 데모, 즉 버전이 하나씩 나온다는 것이다.

 

이러한 Agile과 Scrum의 간단한 도구로 post-it이 있다.

 

5. DevOps

좋은 기술로 원하는 소프트웨어를 개발하기 원하는 개발자와 안정적으로 소프트웨어를 운영하려는 운영자가 합을 맞춰 잘 돌아가야 한다. 이를 위해 나온 개발 철학이자 문화가 DevOps이다.

DevOps의 가장 핵심적인 특징은 모든 과정이 자동화된다는 것이다.

DevOps는 더 짧은 개발 사이클, 증가된 개발 효율, 더 믿을만한 릴리즈를 목표로 한다.

아래의 사진을 보면 DevOps를 위한 많은 도구들이 소개되어 있다.

 

DevOps와 Agile을 비교해보자면 다음과 같다.

협력과 생산성을 높이는 것을 강조한다. Philosophy 반복적인 개발과 testing을 강조한다.
규모가 큰 팀 Team Size 규모가 작은 팀
팀이 나뉘어져 있기 때문에 문서가 중요하다. Documentation 문서를 최소화 한다.
운영팀이 고객의 feedback을 받아 전달한다. Feedback 내부적인 feedback이 주를 이룬다.