1. Redis란? Redis(REmote Dictionary Server)는 인메모리 데이터 구조 저장소이다.Key-Value 형태의 방식으로 데이터를 저장한다.데이터를 RAM에 직접 저장하므로 매우 빠른 읽기/쓰기 성능 2. 인메모리 데이터베이스의 필요성일반적으로 데이터베이스하면, 관계형 데이터베이스가 대표적이다. 관계형 데이터베이스의 주된 목적은 HDD, SSD 같은 파일 시스템에 데이터를 저장함으로써 서비스가 종료되어도 데이터를 안전하게 보관하는 것이다. 파일 시스템에 데이터를 저장하다보니, 데이터를 쓰거나, 읽을 때 속도가 느릴 수밖에 없다. 특정 서비스는 빠른 응답을 요구하기도 하고, 대규모 시스템에 경우 데이터베이스에 부하가 급격히 늘어날 수도 있는데, 인메모리 데이터베이스를 사용하면 데이터..
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. Workflow 설명develop 이나 feature 로 시작하는 브랜치에 코드가 push 되거나 develop 에 pull request가 생성되면,./gradlew clean test를 실행한다. 2. 간단한 Spring Boot Application// ItemController.javapackage com.github_actions.ci_cd;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RestController;import java.util.Arrays;import java.util.List;@RestControllerpublic class Item..
지난 포스팅에서는 Gitlab CI로 CI/CD 파이프라인을 구축했었다.https://griotold.tistory.com/47 이번에는 GitHub Actions로 CI/CD 파이프라인을 구축해보자. 1. GitHub Actions란?GitHub Actions는 소프트웨어 개발 워크플로우를 자동화할 수 있는 강력한 CI/CD 플랫폼이다. 1 - 1. 핵심 구성 요소 1 - 1 - 1. WorkflowYAML 파일로 정의하나 이상의 Job으로 구성특정 이벤트 발생 시 실행 1 - 1 - 2. EventWorkflow를 트리거하는 특정 활동예시: push, pull request, issue 생성 1 - 1 - 3. Job독립된 가상 머신이나 컨테이너에서 실행여러 단계(Step)로 구성기본적으로 병렬 실행..
1. JPA에서 ID 생성 전략 JPA에서는 엔티티의 기본 키(ID)를 생성하기 위한 여러 전략을 제공한다. 2. IDENTITY 전략 IDENTITY 전략은 기본 키 생성을 데이터베이스에 위임한다.MySQL에서는 AUTO_INCREMENT와 같은 데이터베이스 자동 증가 컬럼을 사용한다.엔티티가 영속화될 때 즉시 INSERT SQL이 실행되어 ID 값을 얻는다.엔티티가 영속화될 때 즉시 INSERT SQL이 실행된다는 의미는 영속성 컨텍스트의 쓰기 지연이 적용되지 않는다는 것이다. 영속성 컨텍스트는 트랜잭션이 끝날 때 까지 실행될 SQL을 쓰기 지연 저장소에 모아두고, 커밋 시점에 데이터베이스로 모아둔 쿼리를 날린다. 하지만, IDENTITY 전략을 사용한 경우, 식별자가 데이터베이스에서 할당이 되기 때..
1. AWS ECS(Elastic Container Service) ECS는 컨테이너화된 애플리케이션을 쉽게 배포, 관리 및 확장할 수 있도록 해주는 완전관리형 컨테이너 오케스트레이션 서비스이다. 컨테이너 오케스트레이션 서비스로 유명한 게 k8s(Kubernates)가 있는데, k8s보다 사용하기 쉽고, 비용도 저렴하다. serverless로 구성할 수도 있어서, 인스턴스를 구성하고 관리할 필요도 없다. 2. ECS 주요 구성 요소2 - 1. ECS Cluster컨테이너화된 애플리케이션을 실행하기 위한 논리적 그룹해당 인스턴스에 Docker Container가 분산 실행된다. 2 - 2. ECR(Elastic Container Registry)Docker image 저장소 2 - 3. ECS Task작업..
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..