개발이 좋아서
Redis란?
- Redis(Remote Dictionary Server) : 데이터 처리 속도가 엄청 빠른 NoSQL 데이터베이스이다. Key-Value 형태로 저장. - 장점레디스는 인메모리(in-memory)에 모든 데이터를 저장한다.MySQL과 같은 RDBMS의 데이터베이스는 대부분 디스크(Disk)에 데이터를 저장한다. 하지만 Redis는 메모리(RAM)에 데이터를 저장한다. 디스크(Disk)보다 메모리(RAM)에서의 데이터 처리속도가 월등하게 빠르다. 이 때문에 Redis의 데이터 처리 속도가 RDBMS에 비해 훨씬 빠르다.- 주요 사용 사례캐싱 (Caching)세션 관리 (Session Management)실시간 분석 및 통계 (Real-time Analystics)메시지 큐 (Message Queue)지..

컨테이너 기반 + 확장성을 고려한 프로젝트에서 많이 쓰는 CI/CD 구축 방법(Github Actions, Docker, CodeDeploy)
- 전체적인 흐름- 장점컨테이너 기반의 서버가 여러 대이더라도 쉽게 자동 배포를 구축할 수 있다.쉽게 무중단 배포를 적용시킬 수 있다.- 단점CodeDeploy를 사용함으로써 인프라 구조가 복잡해졌다. 구조가 복잡해짐에 따라 관리 비용, 유지보수 비용, 난이도, 트러블 슈팅 어려움, 복잡도가 증가했다.- 주로 쓰이는 곳컨테이너 기반의 서버를 여러 대 이상 구동해야 하거나 무중단 배포가 중요한 서비스일 때 주로 활용한다.- 구축 방법 (이전 프로젝트 이어서)1. Github Actions 코드 수정하기- .github/workflows/deploy.ymlname: Deploy To EC2on: push: branches: - mainjobs: deploy: runs-on: ubunt..

컨테이너 기반의 프로젝트에서 많이 쓰는 CI/CD 구축 방법(Github Actions, Docker)
- 전체적인 흐름- 장점Docker 기반으로 서비스를 운영할 때, 가장 간단하게 구성할 수 있는 인프라 구조이다.- 단점무중단 배포를 구현하거나 여러 EC2 인스턴스에 배포를 해야 하는 상황이라면, 직접 Github Actions에 스크립트를 작성해서 구현해야 한다. 직접 구현을 해보면 알겠지만 생각보다 복잡하다.- 주로 쓰이는 곳컨테이너 기반으로 인프라를 구성했을 때 이 방법을 많이 활용한다.서버를 여러 대 운영하고 있지 않을 정도의 소규모 프로젝트일 때 주로 활용한다.- EC2에 Docker 설치, ECR 세팅1. Ubuntu에서 Docker, Docker Compose 설치하기$ sudo apt-get update && \ sudo apt-get install -y apt-transport-http..

확장성을 고려한 프로젝트에서 많이 쓰는 CI/CD 구축 방법(Github Actions, Code Deploy)
- 전체적인 흐름- Code Deploy를 사용하는 이유CodeDeploy는 수많은 AWS EC2에 배포를 쉽게 할 수 있도록 도와준다.CodeDeploy에 무중단 배포 기능이 내재되어 있어 손쉽게 무중단 배포를 진행할 수 있다.- 장점서버가 여러 대이더라도 쉽게 자동 배포를 구축할 수 있다.쉽게 무중단 배포를 적용시킬 수 있다.- 단점CodeDeploy를 사용함으로써 인프라 구조가 복잡해졌다. 구조가 복잡해짐에 따라 관리 비용, 유지보수 비용, 난이도, 트러블 슈팅 어려움, 복잡도가 증가했다.- 주로 쓰이는 곳서버를 여러 대 이상 구동해야 하거나 무중단 배포가 중요한 서비스일 때 주로 활용한다.- CodeDeploy 세팅 / IAM 설정1. CodeDeploy 역할(Role) 생성하기 2. CodeDe..

일반 프로젝트에서 많이 쓰는 CI/CD 구축 방법(Github Actions, SCP)
- 전체적인 흐름 - 장점빌드 작업을 Github Actions에서 하기 때문에 운영하고 있는 서버의 성능에 영향을 거의 주지 않는다.CI/CD 툴로 Github Actions만 사용하기 때문에 인프라 구조가 복잡하지 않고 간단하다.- 단점무중단 배포를 구현하거나 여러 EC2 인스턴스에 배포를 해야하는 상황이라면, 직접 Github Actions에 스크립트를 작성해서 구현해야 한다. 직접 구현을 해보면 알겠지만 생각보다 꽤 복잡하다.- 주로 쓰이는 곳실무에서 초기 서비스를 구축할 때 이 방법을 많이 활용한다.인프라 구조를 변경할 때 시간이 많이 들어감에러가 발생했을 때 트러블 슈팅의 어려움팀원이 인프라 구조를 이해하기 어려워 함기능을 추가하거나 수정할 때 더 많은 시간이 들어감금전적인 비용이 더 많이 발..

개인 프로젝트에서 많이 쓰는 CI/CD 구축 방법(Github Actions)
- 전체적인 흐름- 장점git pull을 활용해서 변경된 부분의 프로젝트 코드에 대해서만 업데이트하기 때문에 CI/CD 속도가 빠르다.대부분의 CI/CD 방식들은 전체 프로젝트를 통째로 갈아끼우는 방식을 사용한다.CI/CD 툴로 Github Actions만 사용하기 때문에 인프라 구조가 복잡하지 않고 간단하다.- 단점빌드 작업을 EC2에서 직접 진행하기 때문에 운영하고 있는 서버의 성능에 영향을 미칠 수 있다.Github 계정 정보가 해당 EC2에 저장되기 때문에 개인 프로젝트 또는 믿을만한 사람들과 같이 진행하는 토이 프로젝트에서만 사용해야 한다.- 주로 쓰이는 곳주로 개인 프로젝트에서 CI/CD를 심플하고 빠르게 적용시키고 싶을 때 적용한다.- 구축 방법1. Spring Boot 프로젝트 생성2. G..

Github Actions - 기본 개념
CI/CD(Continuous Integration, Continuous Deployment) - 테스트(Test), 통합(Merge), 배포(Deploy)의 과정을 자동화하는 것을 의미한다. Github Actions의 CI/CD 전체 흐름 코드 작성 후 CommitGithub에 PushPush를 감지해서 Github Actions에 작성한 로직이 실행서버에서 배포된 최신 코드로 서버를 재실행Github Actions의 기본 문법 정리- 프로젝트 최상단에 .github/workflows/xxx.yml 만든다.( .github/workflows 은 이름을 꼭 지켜주어야 한다.)# Workflow의 이름# Workflow : 하나의 yml 파일을 하나의 Workflow라고 부른다. name: Github ..

AWS EC2에서 Docker를 활용해 배포해보기
$ sudo apt-get update && \ sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common && \ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - && \ sudo apt-key fingerprint 0EBFCD88 && \ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" && \ sudo apt-get update && \ sudo apt-get ..
Docker Compose를 활용해 2개 이상의 컨테이너 관리하기
Spring Boot와 MySQL 동시에 띄워보기@RestControllerpublic class AppController { @GetMapping("/") public String home() { return "Hello, World!"; }}- 간단한 코드 작성 spring: datasource: url: jdbc:mysql://localhost:3306/mydb username: root password: pwd1234 driver-class-name: com.mysql.cj.jdbc.Driver- application.yml 에 DB 연결을 위한 정보 작성하기 FROM openjdk:17-jdkCOPY build/libs/*SNAPSHOT.jar /app.jarE..
Docker Compose를 활용해 컨테이너 관리하기
- Docker Compose - 여러 개의 Docker 컨테이너들을 하나의 서비스로 정의하고 구성해 하나의 묶음으로 관리할 수 있게 도와주는 툴이다. - compose.yml 파일을 만들어 작성한다.services: websever: container_name: webserver image: nginx ports: - 80:80$ docker compose up # 포그라운드에서 실행$ docker compose up -d # 백그라운드에서 실행# compose.yml에 정의된 컨테이너 중 실행 중인 컨테이너만 보여준다. $ docker compose ps # compose.yml에 정의된 모든 컨테이너를 보여준다.$ docker compose ps -a- 컨테이너를 확인할 수 있다. ..