생각 없이 행할 수 있는 중요한 작업의 수가 늘어남에 따라 문명은 발전한다.
- Alfred North Whitehead
책에서 말한 Progmatic Starter Kit 은 아래 3가지 주제를 다룬다.
- 버전 관리
- 회귀 테스트
- 전체 자동화
1. 버전 관리
tip 89 버전 관리 시스템으로 빌드, 테스트, 릴리즈를 운용하자.
버전 관리 시스템의 커밋, 푸시로 빌드와 테스트, 배포가 시작된다.
빌드 : 클라우드의 컨테이너 위에서 빌드한다.
배포 : 빌드한 릴리즈 파일은 아래 2가지 서버 중 한 곳에 태그를 사용하여 지정한다.
- 테스트용 staging 서버
- 실제 서비스
key : 빌드 장비, 개발자의 장비에 의존하지 않고 지속적 배포가 가능해야함.
전체 흐름 : 커밋 or 푸시 -> 빌드 -> 배포(staging 서버 or 운용 서버)
2. 회귀 테스트
tip 90 일찍 테스트하고, 자주 테스트하라. 자동으로 테스트하라.
tip 91 모든 테스트가 끝날 때 까지는 코딩이 끝난게 아니다.
tip 92 버그를 심어 놓고 테스트를 테스트하라.
tip 93 코드 커버리지만 올리지 말고 상태 조합을 테스트하라.
tip 94 버그는 한 번만 잡아라.
자동 빌드가 모든 가용한 테스트를 수행한다.
실제 상황과 같은 테스트를 목표로 하는 것이 중요하다.
테스트 종류는 아래 4가지이며, 4가지를 갖춰도 완벽한 테스트를 한 것은 아니다.
- 단위 테스트(unit test) : 하나의 모듈을 테스트 (함수, Class)
- 통합 테스트(integration test) : 프로젝트를 구성하는 서브 시스템이 다른 서브 시스템들과 제대로 작동하는지 테스트 (시스템 연동 테스트)
- 유효성 평가 및 검증(validation and verification) : 사용자들이 필요로 한 것인지, 시스템의 기능적 요구 사항을 충족하는 것인지 확인
- 성능 테스트 (performance test) : 예상하는 사용자 수, 접속 수 혹은 초당 트랜잭션 숫자를 수용 하는가? 주기성을 만족 하는가?
한번 버그를 발견 했다면, 해당 버그를 발견하는 테스트 코드를 추가하자.
3. 전체 자동화
tip 95 수작업 절차를 사용하지 말라.
rsync, ssh를 넣은 셸 스크립트 부터 시작해서 Ansible, Puppet, Chef, Salt 처럼 좋은 기능을 갖춘 패키지를 사용하여 시스템을 전체 자동화 하자.
수작업 단계를 단 1개도 넣지 말자.
직접 찾아본 자동화 툴과 특징
1. Github Action(public 무료, private 유료)

가능한 자동화 : 빌드 -> 테스트 -> 배포 파이프라인
특징 :
Workflows, Events, Jobs, Steps, Actions, Runners 등 몇가지 구성 요소를 알고 있어야함.
yaml 파일 사용
컨테이너 기반 동작
2. Jenkins (무료)

가능한 자동화 : 빌드 -> 테스트 -> 배포 파이프라인 자동화
특징 :
Pipeline, Node, Stage, Step 등 몇가지 구성 요소를 알고 있어야함.
Declarative Pipleline 또는 Scripted Pipleline 2가지 방식으로 사용
외부 컴포넌트에 대해 Plugins 기능 제공 (Git Plugin, Pipeline 등…)
Jenkinsfile 파일 사용
3. 그외… AWS CodeBuild, Azure DevOps, Bamboo, Argo CD, 트래비스 CI
…
내가 사용한다면..?
1. 현재 사용 중인 언어 : C, C++, C#, python
2. 모의기 GUI framework : WPF
3. 사용중인 framework : .NET Framework
3. 주요 OS : Ubuntu 20.04, Windows 10, 11
4. 사용 중인 컴파일러 : gcc, .NET
'Program > Software Architect' 카테고리의 다른 글
[마이크로서비스 3] 마이크로 서비스 capabailties 모델 (0) | 2024.08.15 |
---|---|
[마이크로서비스 2] 마이크로 서비스 장/단점 (0) | 2024.08.12 |
[마이크로서비스 1] 마이크로 서비스 개요 (0) | 2024.08.11 |
gcc sysroot 옵션을 이용한 opencv 크로스컴파일 (0) | 2024.07.17 |
마틴 파울러 SW Architecture 정리 (0) | 2024.07.12 |