목표
react+express
자동화 파이프라인으로 구축, 개발 및 통합(빌드, 테스트, 배포)
웹 개발 프로세스에 더 중점을 두고 진행할 것이다.
테스트 자동화 및 배포 프로세스
개발자로써 해야할 역할, 범위, 타팀과 업무에 대한 이해
환경구성 자동화를 통해 도구의 지원하는 방식. 환경 구성에 주의해야할 부분
개발환경과 프로덕션 환경의 차이를 염두하고, 전체 싸이클을 경험하는 과정이다.
CICD 파이프라인이 중점이 아닌, E2E 테스트, AWS, 인프라 모니터링 관련된 부분이 추가된다.
AWS 클라우드 인프라를 이용한 프로덕션 환경 모사.
모니터링과 시각화
소개
노션과 유사한 상태의 노트, 문서, 메모장과 같은 프로젝트 서비스
- 요구사항으로부터 전체 설계를 도출할 수 있는 능력은 중요하다.
기술스택
BE
- Express.js v4.18
- MariaDB 10.6.16
FE
- React.js v18
- Tiptap library for editor component
- JWT
Production deployment
- AWS : Kubernetes, Minikube 클러스터 환경
- Jenkins, Terraform, Selenium
node.js v18.x
docker desktop으로 구성한 single-node cluster - 테스트용 클러스터 > jenkins 가 설치되어 운용되는 것으로 가정함
Selenium 파이프라인 : 필요할때만 사용
배포환경
EC2 instance 하나에 minikube로 구성한 k8s sluster 서비스 ( 프로젝트에서 제공 )
DB : 같은 EC2 인스턴스에 MariaDB 설치 및 데이터베이스 스키마 생성되어서 제공됨.
프로젝트 명세
- SW 요구사항 명세서 : 결과물 도출물에 대한 설명
- 구조 설계서
- BE : api 입/출력 및 동작에 대한 명시(+소스 코드 패키지 구조)
- FE : 컴포넌트 구분 및 게층 구조 명세(+소스 코드 패키지 구조)
- 상세 설계서
- BE : 생략
- FE : 각 컴포넌트의 기능 명세 및 와이어프레임
개발 과정
- 요구사항 분석을 통한 소프트웨어 아키텍처 설계.
- 개발환경을 셋업하고, 뼈대만 있는 코드(스켈레톤 코드)로 BE,FE 각각 개발 단계 테스트가 가능함을 확인한다.
- 단위테스트를 확보하고 코드를 개발한다.
- 배포를 위한 컨테이너 구조를 설계하고(컨테이너를 만다) 이에 연관한 각 요소들을 테스트를 통해 확인한다.
- 현업에서는, 이 설계가 코드 개발보다 우선이어야 한다.
- CICD 파이프라인을 구축하고, 인수테스트 시나리오를 설계, 적용한다.
- 코드 품질을 확보하기 위한 개선 및 기능 추가를 수행한다.
결론?
한번 프로세스를 잘 구축해두면 (CICD) 이후에 유연하고 효육적 개발을 할 수 있다.
소프트웨어 요구사항 명세서
*요구사항을 만족하는 소프트웨어를 개발하는것!
변경에 따른 업데이트를 자주 적용해야 하고. 테스트 케이스를 작성해야한다.
TDD : 요구사항 > 테스트 케이스 > 코드
필수 산출물!
SRS : Software requirement Specification
소프트웨어 구현물의 기능적/ 비기능적 요구사항을 기술한 문서
- 기능적 요구사항 : 제공해야하는 기능
- 비기능적 요구사항 : 성능, 자원 사용량 등에 존재하는 여러 측면의 제약
waterfall 모델에서 주로 필수 산출물로 정의하고, 애자일 방법론에서는 산출을 생략하는 경우도 있다.
# Requirement-driven development 방식 : 웹개발 맥락에서는 많이 사용하지 않지만,
missionscritical system(디바이스 내부 시스템) 등에서는 foramlverification 방법과 조합해 엄격하게 검증하는게 중요시되고 있다.
요구사항 ID, 요구사항명, 개요, 입력, 출력 에 대한 상세 내용이 표시된다.
☑️ 배운 점
gitaction 을 이용한 CICD 프로젝트에 적용해 보았는데, 클러스터로 파이프라인 구축하여 로컬에서 테스트배포하는 방법 배울 수 있어서 좋을 것 같다.