1. Spring Boot Application을 GitHub Actions로 배포하기개념도 코드를 GitHub에 push하면 Github Actions가 cloudtype에 배포해준다. 2. pull request 생성할 때 테스트하고, main에 push 할 때 배포하기feature/* 브랜치를 만들어서 test 코드를 포함한 수정 작업을 완료한 뒤 pull request 생성Github Actions가 pull request 이벤트를 감지하고 해당 브랜치에 대해 gradle test를 수행test가 실패한 경우, test 코드를 수정하여 pull request에 반영pull request가 승인되면 main 브랜치에 merge되고 cloudtype 서버에 배포 3. cloudtype이란?cloud..
백엔드
1. CI/CD란?소프트웨어 개발 프로세스를 자동화하고 효율화하는 방법론. 1 - 1. CI(Continuous Integration, 지속적 통합)CI는 코드 변경사항을 주기적으로 통합하는 프로세스를 말한다. 1 - 1 - 1. 주요 특징코드 변경사항을 자주 병합하여 충돌을 예방하고 오류를 조기에 발견한다.자동화된 빌드와 테스트 과정을 거친다.버그를 빠르게 발견하고 코드 품질을 향상 시킨다. 1 - 2. CD(Continuous Delivery/Deployment, 지속적 제공/배포)CD는 CI 이후의 단계로, 두 가지 의미로 사용된다. 1 - 2 - 1. Continous Delivery (지속적 제공)배포 준비가 완료된 코드를 수동으로 프로덕션 환경에 배포한다. 1 - 2 - 2. Continuou..
1. Docker Compose란?Docker Compose는 여러 Docker 컨테이너를 정의하고 관리하기 위한 도구이다. YAML 파일을 사용하여 애플리케이션의 서비스, 네트워크, 볼륨 등을 구성한다. 이를 통해 복잡한 다중 컨테이너 애플리케이션을 쉽게 구축하고 실행할 수 있다. Docker Compose는 개발, 테스트, 프로덕션 환경에서 일관된 애플리케이션 배포를 가능하게 하며, 단일 명령으로 모든 서비스를 시작하거나 중지할 수 있다. 2. docker-compose.yml 파일 작성프로젝트 루트 디렉토리에 docker-compose.yml 파일을 생성해야 docker compose 기능을 사용할 수 있다.예시version: '3.8'services: service-a: image: img..
1. 개요2개의 스프링 컨테이너를 생성하고, 통신이 원활한지 확인한다. 2. service-bservice-a 보다 service-b를 먼저 작성하는 이유는 a가 b를 호출하는 구조이기 때문이다. 2 - 1. build.gradleplugins { id 'java' id 'org.springframework.boot' version '3.3.6' id 'io.spring.dependency-management' version '1.1.6'}group = 'com.study'version = '0.0.1-SNAPSHOT'java { toolchain { languageVersion = JavaLanguageVersion.of(17) }}configurations { compileOnly { extend..
1. 일급 컬렉션(First-Class Collection)이 무엇인가요?일급 컬렉션(First-Class Collection)은 컬렉션 객체를 포장(wrap)하면서, 그 외 다른 멤버 변수가 없는 상태를 말한다. 즉, 컬렉션을 감싸고 있는 클래스로, 해당 클래스는 오직 하나의 컬렉션 필드만 가진다. 일급 컬렉션을 사용하면 컬렉션과 관련된 비즈니스 로직을 한 곳에서 관리할 수 있게 되고, 불변성을 보장하며, 비즈니스에 특화된 명확한 이름을 부여할 수 있어 검색이나 가독성을 높일 수 있다. 1 - 1. 예시아래와 같은 코드가 있다고 가정해보면,List names = new ArrayList();names.add("Alice");names.add("Bob");names.add("Charlie"); 아래와 같..
1. Spring Cloud Config란?Spring Cloud Config는 분산 시스템에서 설정 정보를 중앙화된 외부 저장소에서 관리할 수 있게 해주는 Spring Cloud의 핵심 컴포넌트이다. Config Server는 Git, File System, Vault 등의 저장소에서 설정 정보를 가져와 각 마이크로서비스에 제공하며, 설정 변경시 서비스 재시작 없이 동적으로 적용이 가능하다. Config Client는 Config Server로부터 설정 정보를 가져와 사용하며, 이를 통해 모든 마이크로서비스의 설정을 한 곳에서 효율적으로 관리할 수 있다. 여러 환경(개발, 테스트, 운영)과 여러 서비스에 걸친 설정 관리를 단순화하고 일관성을 유지하는 데 도움을 준다. 2. 주요 기능2 - 1. 중앙 집..
1. API Gateway란?API Gateway는 클라이언트와 백엔드 서비스 사이에서 중재자 역할을 하는 소프트웨어 계층이다. 모든 API 호출을 단일 진입점으로 받아 적절한 백엔드 서비스로 라우팅하고, 필요한 데이터를 집계하여 클라이언트에 통합된 방식으로 전달한다. 주요 기능으로는 요청 라우팅, 요청 필터링, 프로토콜 변환, 인증 및 권한 부여, 로깅, 모니터링, 속도 제한, 로드 밸런싱 등이 있다. API Gateway는 마이크로서비스 아키텍처에서 특히 중요하며, API 관리를 단순화하고 보안을 강화하는 데 도움을 준다. 또한, 클라이언트 인터페이스와 백엔드 구현을 분리하여 개발자가 개별 서비스 구축에 집중할 수 있게 한다. 2. Spring Cloud Gateway란?Spring Cloud Gat..
1. ddl-auto 옵션ddl-auto 옵션은 Spring Boot Application에서 Hibernate와 같은 JPA 구현체를 사용할 때 데이터베이스 스키마 관리를 제어하는 설정이다. 이 옵션은 application.properties, application.yml 같은 설정 파일에서 설정할 수 있다. ddl-auto 옵션에는 none, validate, update, create, create-drop 등이 있다. 2. 각 옵션들 정리2 - 1. none데이터베이스 스키마와 관련된 어떠한 작업도 수행하지 않는다.데이터베이스 스키마를 수동으로 관리하고 싶을 때 유용하다.프로덕션 환경에서 주로 사용된다. 2 - 2. validate애플리케이션이 시작될 때, 엔티티 매핑이 데이터베이스 스키마와 일치..