이번 시간에는 CI(continous Integration) 환경을 구축해보겠습니다. 먼저 CI 파이프라인의 워크플로우부터 살펴보겠습니다. CI 파이프라인 워크플로우 개발자가 GitHub 레포지토리에 Pull Request를 올립니다. GitHub는 Pull Request 생성 이벤트가 발생하게되면 Jenkins에 web-hook을 전송합니다. Jenkins가 프로젝트의 빌드 스크립트를 읽어들여 빌드를 진행합니다. 테스트코드를 실행 결과가 실패일 경우, 빌드 fail을 일으킵니다. 테스트 커버리지를 분석하여 80% 미만인 경우, 빌드 fail을 일으킵니다. Jenkins가 빌드 결과를 GitHub에 전송합니다. 빌드 결과에 따라 GitHub의 merge 버튼이 활성화/비활성화 됩니다. Jenkins 서버..
CI/CD란 무엇인가? Wiki는 CI/CD를 다음과 같이 정의하고 있습니다. 소프트웨어 공학에서 CI/CD는 지속적 통합(continuous integration)과 지속적 배포(continuous delivery)가 결합한 사례를 의미한다. CI/CD는 소프트웨어의 개발, 테스트와 배포를 모두 통합함으로써 소프트웨어 버그를 쉽게 찾아낼 수 있으며, 더 빠른 배포 주기를 가질 수 있게 만들어 준다. - wiki CI/CD의 사전적 정의도 중요하겠지만, 저는 경험과 실습을 통해 CI, CD를 다음과 같이 정의내렸습니다. CI(continous integration)는 다수의 프로그래머가 함께 작업하는 환경에서 지속적이면서 쉽게 코드를 통합할 수 있도록 지원하는 개발 환경을 말합니다. CI 에는 빌드, 테..
운영 환경의 application.yml 와 테스트 환경의 application.yml 를 분리해야 합니다. 왜 그래야할까요? 운영 환경과 테스트 환경의 차이를 생각해봅시다. 운영 환경 vs 개발 환경 운영 환경 실제 고객을 대상으로 서비스를 제공한다. 많은 사용자가 사용하므로 데이터의 규모가 크다. 따라서 데이터를 데이터베이스 서버에 저장해야한다. 개발 환경 개발 및 테스트를 목적으로 한다. 고객이 존재하지 않으므로 데이터의 규모가 작다. 따라서 데이터베이스 서버에 데이터를 저장해야한다. 인메모리를 활용해도 목적을 이룰 수 있다. 이 외에도 여러 차이가 존재할 수 있습니다. 핵심은 두 환경의 요구사항이 다르다는 것입니다. 따라서 각 요구사항을 만족시킬 수 있는 설정 파일이 각각 필요합니다. 이 글에서는..
함수형 프로그래밍을 떠올린 계기 함수형 프로그래밍을 적용해야겠다는 생각은 하나의 고민으로부터 시작합니다. [ {날짜: 2023-05-02, 재고: 10개}, {날짜: 2023-05-03, 재고: 9개}, {날짜: 2023-05-04, 재고: 15개, {날짜: 2023-05-05, 재고: 0개}, {날짜: 2023-05-06, 재고: 2개}} ] 위와 같이 객실의 재고를 관리하는 데이터가 존재합니다. 어떤 사용자는 2023-05-02 ~ 2023-05-06 기간 동안 4박 5일로 객실을 예약하려고 합니다. 하지만 2023-05-05 날짜에 해당하는 재고는 0개이므로 이와 같은 예약요청은 실패해야 하는 상황입니다. 예약에 실패하는 경우 모든 객실 데이터의 재고는 반드시 보존되어야 합니다. 이런 요구사항을 어..
안녕하세요. 프로젝트에 스프링 시큐리티를 적용하며 겪었던 문제 상황을 공유합니다. 등록하지 않은 필터가 동작하는 현상 스프링 시큐리티의 FilterChain Bean 을 조작하여 커스텀 필터를 추가할 수 있습니다. 로그인 필터를 구현한 후, API를 테스트할 때마다 로그인하는 것이 귀찮았습니다. 잠시 로그인 필터를 빼놓으려고 주석처리를 했음에도 여전히 필터가 동작하는 이상한 현상이 일어났습니다. public class TestFilter extends AbstractAuthenticationProcessingFilter { public TestFilter(String defaultUrl) { super(defaultUrl); } } public class SecurityConfig { @Bean publ..
- Total
- Today
- Yesterday
- NHN 면접
- GitHub Webhook
- Jenkins
- 배열리스트
- CD 파이프라인 구축
- 랠릿
- NHN 엔터프라이즈 면접
- JWT 토큰
- 비관적락
- CI/CD 파이프라인
- java 로그인
- 더미데이터 생성
- 분산락
- NHN 엔터프라이즈
- CI/CD
- Spring Application 서버 실행
- HTTP 완벽 가이드
- 동시성 이슈
- 디지털 청년 고민 해결단 온라인 멘토링
- C 인터뷰
- T 인터뷰
- 낙관적락
- 디지털 청년 고민 해결단
- Docker 자동화 배포
- 데이터베이스 동시성
- F-LAB
- application.yml 분리
- application.properties 분리
- 개발자 면접
- 회고
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |