팀프로젝트 배포를 위한 간단한 Redis, AWS, GitHub Actions, Docker 기초 개념과 사용법

이상민·2024년 9월 22일
0

1. Redis란 무엇인가?

Redis는 매우 빠른 데이터 저장소다. 주로 캐시나 세션 데이터를 저장하기 위해 사용된다. 데이터를 메모리에 저장하기 때문에 읽고 쓰는 속도가 빠르다.

Redis 설치 방법

로컬에서 Redis를 설치할 수 있고, 클라우드에서 Redis를 사용할 수도 있다.

sudo apt-get install redis-server
brew install redis

Redis 사용 예시
Redis 서버를 실행한다

redis-server

Redis 클라이언트에 접속하여 데이터를 저장하거나 읽어올 수 있다

# 데이터 저장
SET user:1000 "Alice"

# 데이터 조회
GET user:1000  # 결과: "Alice"

2. AWS란 무엇인가?

AWS(Amazon Web Services)는 클라우드 서비스로, 서버를 대여하거나 여러 가지 서비스를 제공받을 수 있다. 서버를 직접 운영하지 않고 AWS의 서버를 빌려 사용하면 된다.

AWS EC2로 서버 배포하기

EC2 인스턴스 생성 AWS 콘솔에서 EC2 서비스를 선택하고, 원하는 OS를 선택해 인스턴스를 시작한다.
생성된 인스턴스의 퍼블릭 IP를 이용해 서버에 SSH로 접속할 수 있다.

ssh -i your-key.pem ubuntu@your-ec2-public-ip

앱 배포 서버에 파일을 전송하고 실행하면 된다.

# 파일 전송
scp -i your-key.pem your-app.jar ubuntu@your-ec2-public-ip:/home/ubuntu/

# 서버에서 실행
java -jar your-app.jar

AWS S3 사용하기

S3는 파일을 저장하는 서비스다. 이미지나 파일을 업로드하거나 다운로드할 수 있다. AWS 콘솔에서 S3 버킷을 생성하고, 파일을 저장하거나 다운로드하는 작업을 Java 코드로도 처리할 수 있다.

3. GitHub Actions란 무엇인가?

GitHub Actions는 코드가 변경될 때마다 자동으로 빌드, 테스트, 배포 등의 작업을 처리해주는 자동화 도구다.

GitHub Actions 설정 방법

.github/workflows/ 폴더 안에 .yml 파일을 추가해 워크플로우를 설정할 수 있다.

간단한 빌드 및 배포 설정 예시

name: CI/CD Pipeline

on:
  push:
    branches:
      - main

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - name: Checkout Code
      uses: actions/checkout@v2

    - name: Set up JDK 11
      uses: actions/setup-java@v1
      with:
        java-version: '11'

    - name: Build with Gradle
      run: ./gradlew build

이 설정은 main 브랜치에 코드가 푸시될 때 자동으로 빌드를 실행하게 된다. GitHub Actions는 코드의 품질을 높이고, 배포 과정을 간편하게 해준다.

4. Docker란 무엇인가?

Docker는 프로그램을 어디서든 똑같이 실행할 수 있도록 필요한 모든 환경을 컨테이너 안에 담는 도구다. 이를 통해 개발 환경과 배포 환경의 차이로 발생하는 문제를 해결할 수 있다.

Dockerfile 작성 예시

Dockerfile을 작성해 앱이 어떻게 실행되는지 정의할 수 있다.

Dockerfile 예시

# 베이스 이미지 설정
FROM openjdk:11

# Jar 파일 복사
COPY ./your-app.jar /usr/app/your-app.jar

# 앱 실행
CMD ["java", "-jar", "/usr/app/your-app.jar"]

Docker 이미지 빌드

docker build -t your-app-name .

Docker 컨테이너 실행

docker run -p 8080:8080 your-app-name

Docker를 사용하면 어디서나 같은 환경에서 앱을 실행할 수 있고, 배포 및 운영의 효율성을 높일 수 있다.

마무리

Redis, AWS, GitHub Actions, Docker는 각각의 역할을 통해 개발과 배포 과정을 더 간편하게 만들어준다. Redis는 데이터를 빠르게 처리하고, AWS는 클라우드 서버와 다양한 서비스를 제공하며, GitHub Actions는 자동화된 작업을 가능하게 하고, Docker는 일관된 환경에서 앱을 실행할 수 있도록 도와준다.

profile
안녕하세요

0개의 댓글