안녕하세요, 오늘도 최종프로젝트 진행상황과 기술면접 준비내용을 정리해보았습니다.
CI/CD에 대해서 설명해주세요.
Continuous Integration (CI - 지속적 통합)
- CI는 개발 과정에서 자주 코드 변경 사항을 통합하는 것을 의미합니다. 개발자가 코드를 커밋할 때마다 자동으로 테스트를 실행하고, 코드를 공유 레포지토리에 병합합니다.
- 목표는 개발자가 작업하는 동안 발생한 문제를 조기에 발견하고 해결하여 통합된 코드베이스가 항상 실행 가능한 상태를 유지하는 것입니다.
Continuous Delivery (CD - 지속적 배포) 또는 Continuous Deployment (지속적 배포)
- Continuous Delivery는 개발된 소프트웨어를 언제든지 배포할 수 있는 상태로 유지하는 것을 의미합니다. 즉, 자동화된 빌드 및 배포 프로세스를 통해 언제든지 소프트웨어를 스테이징 또는 프로덕션 환경으로 배포할 수 있습니다.
- Continuous Deployment는 Continuous Delivery의 한 단계 더 나아가, 변경 사항을 자동으로 프로덕션 환경에 배포하는 것을 의미합니다. 이는 테스트와 검증이 자동화되어 신뢰성 있는 배포를 보장합니다.
CI/CD의 장점
- 빠른 피드백: 코드 변경 사항에 대해 신속한 피드백을 받을 수 있어 문제를 조기에 해결할 수 있습니다.
- 높은 품질: 지속적인 테스트와 검토를 통해 코드 품질이 향상됩니다.
- 효율성 증대: 자동화된 프로세스를 통해 개발 및 배포 시간이 단축되고 효율성이 향상됩니다.
- 위험 감소: 자주 작은 단위로 배포함으로써 대규모 배포 시 발생할 수 있는 위험을 줄입니다.
CI/CD 도구
TDD에 대해서 설명해주세요.
- 소프트웨어 개발 방법론 중 하나로, 소프트웨어를 개발할 때 테스트 케이스를 먼저 작성한 다음, 그 테스트 케이스를 통과시키기 위한 코드를 작성하는 개발 방법론입니다.
- TDD는 소프트웨어의 품질을 향상시키고 버그를 줄이며, 코드를 더 모듈화하고 유지보수하기 쉽게 만드는 데 도움을 줍니다.
주요 단계
- 테스트 작성 (Test): 개발자는 작성하려는 기능 또는 모듈에 대한 테스트 케이스를 작성합니다. 이 테스트 케이스는 해당 기능이나 모듈의 기대 동작을 설명하는 단언문(assertion)을 포함하며, 초기에는 테스트가 실패할 것으로 예상합니다.
- 코드 작성 (Code): 테스트 케이스를 작성한 후, 실제 코드를 작성한다. 이때, 테스트 케이스를 통과시키기 위한 최소한의 코드만 작성합니다. TDD에서는 "빨간 막대 (Red bar)" 단계라고도 불리며, 이 시점에서는 테스트가 실패합니다.
- 테스트 통과 (Refactor): 작성한 코드가 테스트를 통과하도록 수정합니다. 코드를 리팩토링하여 가독성을 높이고 중복을 제거하는 등의 작업을 수행할 수 있습니다. 이 시점에서 "초록 막대 (Green bar)"가 나타나며, 테스트가 성공합니다.
- 코드 리팩토링 (Refactor): 테스트가 성공한 후에도 코드를 계속해서 개선하고 리팩토링합니다. 이 과정을 통해 코드 품질을 높이고 유지보수를 용이하게 만듭니다.
TDD의 장점
- 높은 코드 품질: 테스트 코드를 먼저 작성하므로 코드의 정확성을 보장하고, 버그를 초기에 발견할 수 있습니다.
- 향상된 유지 보수성: 코드의 의도를 명확히 하고, 변경사항이 발생할 때 테스트를 통해 쉽게 검증할 수 있습니다.
- 신속한 피드백: 작은 단위로 테스트를 작성하고 검증하므로, 빠르게 피드백을 받을 수 있습니다.
- 명확한 요구사항: 테스트를 작성하면서 요구사항을 명확히 정의할 수 있습니다.
- 자신감 있는 리팩토링: 리팩토링 후에도 테스트를 통해 코드의 기능이 유지됨을 보장할 수 있습니다.
최종프로젝트
진행상황체크
프론트 마무리
발표자료준비