
Docker란? 데이터 또는 프로그램을 격리시키는 기능 Go언어로 작성된 리눅스 컨테이너 기반으로하는 오픈소스 가상화 플랫폼으로 애플리케이션을 작업자 취향에 맞게 원하는 그룹들로 묶어서 관리할 수 있다. A프로그램과 B프로그램을 묶어서 하나의 컨테이너로 관리한다고 했을 때 하나의 컨테이너를 중지하면 A,B 프로그램이 중지되고 컨테이너를 실행하면 A,B 프로그램이 동시에 실행될 수 있도록 Docker를 통해서 작업할 수 있다. 수동으로 운영되고 관리되던 프로세스들을 간편하게 관리할 수 있도록 도와주것이 Docker의 장점 중 하나이다. Docker를 이용하면 Tomcat이나 MariaDB 같은 각각의 프로세스별로 묶어서 OS같은 환경이 구성되어 개별로 운영되는 것처럼 독립적인 환경에서 관리하는 기능을 제공..

CI(Continuous Integration)/CD(Continuous Delivery)란? 애플리케이션 개발 단계를 자동화하여 애플리케이션을 더욱 짧은 주기로 고객에게 제공하는 방법. CI/CD의 기본 개념은 지속적인 통합, 지속적인 서비스 제공, 지속적인 배포이다. CI/CD는 새로운 코드 통합으로 인해 개발 및 운영팀에 발생하는 문제(일명 통합 지옥 "integration hell")를 해결하기 위한 솔루션이다. 특히 CI/CD는 애플리케이션의 통합 및 테스트 단계에서부터 제공 및 배포에 이르는 애플리케이션의 라이프사이클 전체에 걸쳐 지속적인 자동화와 지속적인 모니터링을 제공한다. 이러한 구축 사례를 일반적으로 "CI/CD 파이프라인"이라 부르며, 개발 및 운영팀의 애자일 방식 협력을 통해 Dev..

마이크로 서비스에 대한 간단한 단위 테스트를 개발한다. gitlab, jenkins를 통해 테스트 자동화를 위해서도 JUnit 단위 테스트 개발이 필요하다. item-service 프로젝트에 test 패키지에 ItemServiceApplicationTests 클래스가 존재한다. 해당 클래스의 @SpringBootTest 어노테이션은 SpringBoot를 실행할 때 사용되는 환경들과 의존성들을 전부 load 해주는 기능을 가지고 있다. SpringBoot가 실제로 실행되는 환경처럼 실행된 다음 그 환경에서 테스트를 하고 테스트가 끝나면 중지되는 절차를 제공해준다. 실제로 실행되려면 config-server가 실행되어야 mariadb와 연동해서 테스트가 가능하니 config-server를 실행하고 conte..