◎개발 프로세스의 발전
‣ 개발프로세스(= 소프트웨어 개발 프로세스 모델)
: 소프트웨어 개발 생명주기를 기반으로 만들어졌다.
- 전통적인 개발 프로세스
: 요구분석 => 설계 => 개발 => 테스트 => 유지보수
-폭포수 개발 방식: 한 방향으로만 프로세스가 진행되는 개발 과정
- 테스트
-시스템 테스트: 모든 모듈을 통합한 후 최종적으로 완성된 요구사항을 만족하는지 확인
-알파 테스트: 완전히 개발된 시스템을 개발 현장에서 비공개로 테스트하는 것
-베타 테스트: 고객의 실제 사용 환경에서 수행되는 테스트
- 한계
=> 다양한 테스트 방식을 도입했음에도 사용자가 항상 최신 상태로 업데이트를 해줘야하며, 버그 수정된 버전을 유저에게 즉각적으로 전달하기 어렵다.
- 애자일 방식
: 짧은 주기의 개발 사이클을 계속해서 반복

=> SaaS를 개발하는데 적합
(SaaS란, 클라우드 서비스의 한 방식으로 브라우저에 접속하기만 해도 새 버전을 즉시 사용할 수 있는 서비스 방식)
‣DevOps
- Dev(개발팀): 잦은 배포및 업데이트, 애플리케이션을 통해 새로운 기능 제공
- Ops(운영팀): 프로덕션 앱의 안정성 확보, 인프라 관리, 모니터링 및 제어
=> 코드 통합, 테스트, 배포 과정을 통합
=> 지속적 통합 및 배포(CI/CD)
◎CI/CD
‣CI/CD
- CI
: 개발자를 위한 자동화 프로세스인 지속적인 통합
- Code: 개발자가 코드를 원격 코드 저장소에 push하는 단계
- Build: 원격 코드 저장소로부터 코드를 가져와 유닛 테스트후 빌드하는 단계
- Test: 코들 빌드의 결과물이 다른 컴포넌트와 잘 통합되는지 확인하는 과정
- CD
: 지속적인 서비스 제공 및 지속적인 배포
- Release: 배포 가능한 소프트웨어 패키지 작성
- Deploy: 프로비저닝을 실행하고 서비스를 사용자에게 노출한다.
- Operate: 서비스 현황을 파악하고 생길수 있는 문제를 감지한다.
- 흔한 사례
=> Github Page: 지정해둔 디렉터리에 정해진 방식에 따라 잘 커밋하기만 하면, Github Page가 알아서 해당 index.html파일과 해당 디렉터리에 있는 파일을 잘 번들링해서 Github page 서버에 업로드한다.
‣CI/CD 파이프라인
- 배포 자동화
: 한번의 클릭 혹은 명령어 입력을 통해 전체 배포 과정을 자동으로 진행하는 것
- CI/CD 파이프라인
: 수없이 진행되는 배포과정을 자동화시키는 방법
- 파이프라인 단계
- Source 단계: 원격 저장소에 관리되고 있는 소스 코드에 변경 사항이 일어날 경우, 이를 감지하고 다음 단계로 전달하는 작업
- Build 단계: Source 단계에서 전달받은 코드를 컴파일, 빌드, 테스트하여 가공한다. 생성된 결과물을 다음 단계로 전달하는 작업 수행.
- Deploy 단계: Build 단계로부터 전달받은 결과물을 실제 서비스에 반영하는 작업 수행
◎Github Action
: Github가 공식적으로 제공하는 빌드, 테스트 및 배포 파이프라인을 자동화할 수 있는 CI/CD 플랫폼
- YAMIL(Yet Another Markup Language)
: 사람이 읽을 수 있는 데이터 직렬화 언어
◎Github Action 실습
- 먼저 .github의 workflows 폴더안에 'client.yml'파일을 추가해준다.
- 밑의 코드를 넣어준다.

-빈칸을 매우 조심해야한다!
-AWS access key를 절대 하드코딩하지 말아야한다....
했다가 메일 날라오고 그래서 멘붕이었다..주의!!!
- 나머지는 다했는데 근데 왜...에러가 계속...

