
웹 서버 TOMCAT Tomcat이란? Apache사에서 개발한 서블릿 컨테이너만 있는 오픈소스 웹 애플리케이션 서버 Spring Boot의 내장 서버이기 때문에 별도의 설치 과정 없이 자연스럽게 Tomcat을 사용함 Tomcat의 특징 자바 애플리케이션을 위한 대표적인 오픈소스 WAS(Web Application Server) 오픈소스이기 때문에 라이선스 비용 부담 없이 사용할 수 있음 독립적으로도 사용 가능하며 Apache 같은 다른 웹 서버와 연동하여 함께 사용할 수 있음 Tomcat은 자바 서블릿 컨테이너에 대한 공식 구현체로, Spring Boot에 내장되어 있어 별도의 설치 과정이 필요하지 않음 Tomcat 실행 및 의존성 확인하기 IntelliJ 상단 메뉴바의 View > Tool Windo..

Proxy Server 프록시 서버 대리라는 뜻의 Proxy에서 알 수 있듯 프록시 서버(Proxy Server)는 클라이언트가 서버와 소통할 때, 서버에 바로 접근하지 않고 자신을 통해 서버에 접근할 수 있도록 해주는 일종의 대리 서버 보통 일반 사용자는 지역이 제한되어 있는 서비스를 이용하기 위해 우회하거나, 캐시를 통해 더 빠른 이용을 하기 위해 프록시 서버를 사용함 프록시 서버의 종류 프록시 서버는 위치에 따라 Forward Proxy와 Reverse Proxy 두 가지로 나뉨 프록시 서버가 클라이언트에 가까이 있는지, 서버에 가까이 있는지로 구분할 수 있음 각각 다른 목적을 기대하기 때문에 상황을 고려하여 판단을 내릴 수 있음 1. Forward Proxy Forward Proxy는 클라이언트 ..

Github Actions를 통한 배포 자동화 빌드파일 배포 및 실행 CodeDeploy 설정 S3에 저장된 빌드 파일을 EC2 인스턴스로 전달하기 위해 CodeDeploy 설정을 진행함 CodeDeploy 애플리케이션 생성하기 배포 > 애플리케이션을 클릭함 [애플리케이션 생성] 버튼을 클릭함 애플리케이션 이름을 작성하고, 컴퓨팅 플랫폼은 EC2/온프레미스를 선택함 애플리케이션 이름의 경우 Github Actions 워크플로에 작성이 필요함 애플리케이션이 생성되면 해당 애플리케이션 내에 배포 그룹을 생성함 배포 그룹 생성하기 배포 그룹은 방금 전 생성한 애플리케이션에 생성되어야 함 다른 애플리케이션에 생성하고 있거나 애플리케이션 정보가 잘못된 경우 이전 진행 내역을 다시 진행해야 함 배포 그룹 이름 역시..

Github Actions를 통한 배포 자동화 개요 및 사전 준비 사항 주의 사항 EC2 인스턴스에 파이프라인 실습으로 인해 실행되고 있는 애플리케이션이 있다면 프로세스를 종료함 이전에 진행한 실습으로 생긴 리소스를 리소스 이름을 확인한 후 모두 삭제하고 진행함 CodeBuild 빌드 프로젝트 CodeDeploy 애플리케이션과 배포그룹 CodePipeline 파이프라인 EC2 인스턴스에 있는 이전 빌드 결과물 안내되어 있는 이름 규칙을 반드시 지켜야 함 이름 규칙, 태그 등 안내에 따르지 않으면 리소스가 삭제될 수 있음 실습에서 안내하는 기능이나 리소스 외에 다른 기능을 사용하는 경우, 개인 Root 계정을 사용해야 함 프로젝트 사전 준비 https://start.spring.io/ 를 통해 간단한 프로..

배포 자동화 환경 변수 설정 환경 변수 생성 후 EC2에 전달 파이프라인에 올린 EC2 instance에 환경 변수를 전달하는 방법 비밀번호와 같은 환경 변수는 외부에 노출되면 안 되기 때문에, 소스코드에 포함할 수 없음 AWS Parameter Store 서비스를 이용하면 EC2 instance에 환경 변수를 전달할 수 있음 Parameter Store 대시보드로 이동 후, [ 파라미터 생성 ] 버튼을 클릭함 환경변수명과 값 입력 후, 우측 하단의 [ 파라미터 생성 ] 버튼을 클릭함 운영 환경 구성 시 총 4개(spring.datasource.url, spring.datasource.username, spring.datasource.password, config.domain)의 환경 변수를 이용해 DB..

배포 자동화 Automated Deployment 배포 자동화 배포 자동화란 한 번의 클릭 혹은 명령어 입력을 통해 전체 배포 과정을 자동으로 진행하는 것을 뜻함 배포 자동화가 필요한 이유 수동적이고 반복적인 배포 과정을 자동화함으로써 시간이 절약됨 휴먼 에러(Human Error)를 방지할 수 있음 배포 자동화 파이프라인 배포에서 파이프라인(Pipeline)이란 용어는 소스 코드의 관리부터 실제 서비스로의 배포 과정을 연결하는 구조를 뜻함 파이프라인은 전체 배포 과정을 여러 단계(Stages)로 분리하며, 각 단계는 파이프라인 안에서 순차적으로 실행되며, 각 단계마다 주어진 작업(Actions)들을 수행함 파이프라인을 여러 단계로 분리할 때, 대표적으로 쓰이는 세 가지 단계가 존재함 Source 단계 ..

Docker Docker CLI Docker Image 및 Container를 다루기 위한 Docker CLI(Command Line) 명령어 Ubuntu 운영체제로 진행하는 경우, 관리자 권한(sudo)으로 Docker 명령어를 실행해야 함 Docker CLI(Command Line Interface) 도커를 이용하는 데 있어서 명령어, 옵션 등 사용법은 Docker docs에서 확인할 수 있음 Docker CLI 관련 정보뿐만 아니라 Docker의 전반적인 사용법과 환경을 구성하는 방법에 대해서도 확인할 수 있 사용법 : Docker CLI, Docker-Compose CLI, API Reference 환경 및 빌드 파일 구성 : DockerFile, Docker-Compose File 도커 이용하기..

Docker Docker 핵심 키워드 컨테이너 애플리케이션이 의존성, 네트워크 환경, 파일 시스템에 구애받지 않고, 도커라는 기술 위에 실행될 수 있도록 만든 애플리케이션 상자 이미지 실행되는 모든 컨테이너는 이미지로부터 생성됨 이미지는 애플리케이션 및 애플리케이션 구성을 함께 담아놓은 템플릿으로, 이를 이용해 즉시 컨테이너를 만들 수 있음 이미지를 이용해 여러 개의 컨테이너를 생성할 수 있으며, 이를 이용해 애플리케이션의 수평 확장이 가능함 이미지는 기본 이미지(base image)로부터 (마치 git을 사용하는 것처럼) 변경 사항을 추가/커밋해서 또 다른 이미지를 만들 수도 있음 스프링부트 기반의 애플리케이션을 이미지로 만들고 싶은 경우, 스프링부트 초기 세팅 이미지를 기본 이미지로 삼고 내가 만든 ..