지속적 통합6 DevOps Day 34 (4.21) 코드로부터 환경 변수 분리 Sprint 가장 긴 단어가 2개 이상이면 첫번째로 등장하는 단어GitHub Action을 이용하여 CI 상에서 Mini node server를 Docker 이미지로 만든 후, 여러분의 Docker Hub에 push하세요 1. CI 상에서 주어진 Dockerfile을 이용해 Docker 이미지를 빌드할 수 있도록, workflow를 새로 만드세요. - 다음 레퍼런스를 참고해서 Docker 빌드용 GitHub Action workflow를 만드세요. - workflow를 추가한다고 해서 GitHub Action이 즉시 작동하지는 않을 것입니다. - repository에서 오른쪽 사이드바를 살펴보면, Release -> Create a new release 링크가 존재합니다. - 이 링크를 누르고 새로운 릴리스를 발행합.. 2023. 4. 21. DevOps Day 34 (4.21) 지속적 통합_릴리스 준비 환경 변수 운영체제 혹은 소프트웨어가, 각기 다른 컴퓨터 또는 사용자마다 별도로 가질 수 있는 고유한 정보를 담는 데 사용하는 변수를 특별히 환경 변수라고 합니다. 환경 변수는 왜 필요한가? 배포되는 기능마다 설정이 달라질 수 있기 때문입니다. - 새로운 배포마다, 새로운 기능들을 배포하게 됨으로써 설정값이 바뀌게 됩니다. - 따라서 코드의 버전을 관리하는 것처럼 설정값의 버전을 관리할 필요가 있습니다. Q. 설정은 왜 환경변수를 통하여 분리해야 할까요? - 환경 변수는 코드 변경 없이 배포 때마다 쉽게 변경할 수 있습니다. - 설정 파일과 달리, 잘못해서 코드 저장소에 올라갈 가능성도 적습니다. - 다른 설정 메커니즘과 달리 언어나 OS에 의존하지 않습니다. - 설정을 환경 변수를 통해 분리해야 하는 .. 2023. 4. 21. DevOps Day 33 (4.20) 빌드 및 테스트 자동화 Sprint “Github Action을 이용한 빌드 및 테스트 자동화” 먼저 테스트 주도 개발을 연습합니다. 직접 test/app.test.js를 수정하여 통과하지 않는 테스트를 모두 통과시키세요. 1. 애플리케이션은 node.js로 작성되어 있습니다. node.js LTS 버전을 준비합니다. 2. 먼저 애플리케이션의 의존성(dependency)을 설치해야 합니다. npm install 명령을 이용해 의존성을 설치합니다. 3. 테스트가 통과하는지 확인하려면 npm test 명령을 이용합니다. 다음과 같이 테스트가 통과하지 않는 것을 먼저 확인하세요. 4. test/app.test.js 파일을 열어 통과하지 않는 테스트를 수정하세요. FILL_ME_IN이라고 적힌 곳에 기댓값을 적어주면 됩니다. 2. GitHub Action을 이용해서 Node.js CI를 적용하세요. 1. .. 2023. 4. 21. DevOps Day 33 (4.20) 지속적 통합_테스트 테스트 테스트 주도 개발 (Test Driven Deployment, TDD) : - 테스트 주도 개발이란 테스트가 기능의 디자인을 주도하는 반복적인 개발 방법론을 뜻합니다. 기존의 개발 과정 : 기존의 개발 프로세스는 아래와 같습니다 : 1. 요구사항 분석 2. 요구 사항을 토대로 디자인(설계)을 진행 3. 설계에 맞추어 기능을 개발. 4. 구현 완료 후 수동으로 기능을 테스트 5. 원하는 대로 동작하지 않거나 문제가 발생하면 디버깅을 통해 원인을 파악하고 수정 6. 3 - 4의 과정을 개발이 완료될 때까지 반복 테스트 프로세스 : 1. 요구사항 분석 2. 요구 사항을 토대로 디자인(설계)을 진행 3. 설계를 기반으로 기능 테스트 진행 - 실패 시 다시 설계 4. 테스트가 성공했다면 개발 진행 5. 3.. 2023. 4. 20. DevOps Day 33 (4.20) 지속적 통합 지속적인 통합 팀 구성원이 각자의 작업을 자주 통합하는 소프트웨어 개발 방식 – Martin Fowler 이 방법을 도입함으로써 얻을 수 있는 장점에 대해서는 앞서 다음과 같이 설명했습니다 : - 버그를 일찍 발견할 수 있다. - 빌드 및 테스트와 같이 사람이 해야 할 일들을 자동화할 수 있다. - 테스트가 완료된 코드에 대해 빠른 전달이 가능하다. - 지속적인 배포가 가능해진다. - 개발자의 생산성을 향상할 수 있다. 생각해봐야하는 질문들 : 지속적 통합이 있기 전에는 어떻게 릴리스를 만들었을까요? 지속적 통합을 도입함으로써 기존의 개발 방식의 어떠한 문제를 해결해 주었을까요? 지속적 통합을 통해 어떻게 버그를 일찍 발견할 수 있는 걸까요? 지속적 통합 과정에서 반드시 자동화가 이뤄져야 하는 부분은 어.. 2023. 4. 20. DevOps Day 33 (4.20) 지속적 통합_CI/CD 리뷰 CI/CD 파이프라인 전통적인 소프트웨어 전달 방식 : 출시 기한을 정해 놓고 소프트웨어를 완성 : 폭고수 모델 문제점 : - 출시 시점에 소프트웨어의 신뢰성, 안정성을 보장할 수 없음 - 출시를 약속하고 뚜껑을 열어봤을 때, 산더미처럼 쌓여있는 버그 소프트웨어 안전성 개선을 위한 노력 : 베타 버전 등을 통한 테스트 특징 : - 사용자가 항상 최신 상태로 업데이트해야 함 - 따라서 버그 수정을 사용자에게 전달하기 매울 어려움 - 여전히 모바일 애플리케이션이 사용하는 전달 방식 Saas (Software as a service) - 서비스로서의 소프트웨어 - 브라우저에 접속하기만 해도, 새 버전을 즉시 사용할 수 있음 클라우드 서비스의 전달 방식 : 고객의 요구에 민첩하게 대응하여 지속적 전달 : 애자일.. 2023. 4. 20. 이전 1 다음