Cloud
진행중인 프로젝트의 데브서버에 CI/CD 파이프라인을 구축하는 작업을 맡게 되었다.이전 포스팅에서 AWS EC2에 스프링 프로젝트를 Docker 컨테이너 사용과 함께 가장 심플한 형태로 배포해 본 적이 있다.이번 포스팅에서의 목표는 해당 내용의 연장선으로 자동적으로 Git에 소스코드가 Push되면 이를 자동으로 배포하는 CI/CD 파이프라인을 구축해보려고 한다. (+ 데브서버이기에 AWS 프리티어 사용 한도 이내에서만 하는 것을 목표로 했다. 따라서 AWS CodeDeploy 등 다른 과금이 나가는 서비스를 사용하지 않고 기본제공 EC2 + S3만을 사용한다) Docker에 대해서 기본적인 이해가 있다고 가정하고, 아래의 AWS 배포 과정의 연장선으로 진행하기 때문에 이해가 되지 점이 있다면 아래의 포스..
이번 포스팅에서는 GCP에서 지속적 통합/배포라고 불리는 CI/CD 파이프라인을 구축해보는 작업을 해보도록 하겠다. CI/CD 란? CI는 지속적 통합(Continuous Integration) CD는 지속적 배포(Continuous Deployment)을 나타낸다. CI, Continuous Integration (지속적 통합): 개발자들이 작업한 코드를 지속적으로 통합하여 통합 문제를 최소화하고, 코드 변경이 일어날 때마다 자동으로 빌드 및 테스트가 실행되며, 코드베이스에 통합시키도록 한다. CD, Continuous Deployment (지속적 배포) : CI를 통과한 이후, 자동화된 프로세스를 통해 테스트를 통과한 코드를 실제 환경으로 자동으로 프로덕션 환경에 배포하는 파이프라인 구축을 목적으로 ..
이전 포스팅에서 GCP의 쿠버네티스 클러스터를 생성하고, 클러스터 내부의 데이터베이스와 Application 작업을 생성하고, 네트워크 연결까지를 다루었다. 이번 포스팅에서는 Kubernetes Ingress 설정과 이를 통해서 HTTPS 적용을 해보도록 하겠다. Kubernetes Ingress Kubernetes 클러스터 내에서 HTTP 및 HTTPS와 같은 웹 트래픽을 관리하고 라우팅하기 위한 API 및 리소스이다. 클러스터 외부에서 내부로 들어오는 HTTP/HTTPS 요청을 처리하고 여러 서비스들 앞에서 라우터 역할을 하고, 클러스터의 진입점 역할을 한다. 웹 애플리케이션의 경로 기반 라우팅, 로드 밸런싱, SSL/TLS 암호화, 호스트 기반 라우팅 등 다양한 설정을 지원한다. 즉 Kubernet..
이전 포스팅에서 GCP의 쿠버네티스 클러스터를 생성하고, 클러스터 내부의 데이터베이스와 Application 작업을 생성해보는 과정까지를 거쳤다. 이번 포스팅에서는 Cloud Shell을 통해 Kubernetes 클러스터에 접속해보고, 클러스터 내부간의 연결 및, 클러스터 외부에서 Application에 접근을 가능하도록 하기 위해서 네트워크 설정을 해보도록 하겠다. 쿠버네티스에 관한 내용은 아래 포스팅에 남겨두었으니 참고하면 좋을 것 같다. https://sjh9708.tistory.com/99 [Kubernetes] 쿠버네티스의 개념과 구성 요소 쿠버네티스란? 쿠버네티스(Kubernetes)는 컨테이너 오케스트레이션 플랫폼의 하나로, 분산 시스템을 관리하고 배포하는 데 사용된다. 쿠버네티스는 컨테이너..
이번 포스팅에서는 오토 스케일링과 무중단 배포를 위해서, GCP 인스턴스를 쿠버네티스 클러스터를 사용해서 생성하고 관리하는 과정을 다루어 보려고 한다. 쿠버네티스에 관한 내용은 아래 포스팅에 남겨두었으니 참고하면 좋을 것 같다. https://sjh9708.tistory.com/99 [Kubernetes] 쿠버네티스의 개념과 구성 요소 쿠버네티스란? 쿠버네티스(Kubernetes)는 컨테이너 오케스트레이션 플랫폼의 하나로, 분산 시스템을 관리하고 배포하는 데 사용된다. 쿠버네티스는 컨테이너화된 애플리케이션을 자동화된 방식으 sjh9708.tistory.com 쿠버네티스 클러스터 생성하기 클러스터는 쿠버네티스가 관리하는 전체 시스템을 의미하며, 클러스터에는 여러 대의 서버, 가상 머신으로 구성된 노드들이 ..
이전에 Google Cloud Platform (GCP)를 이용하여 Docker 컨테이너를 배포하는 방법을 포스팅한 적 있다.이번에는 AWS를 사용하여 배포하는 방법을 살펴보도록 하자. AWS 인스턴스에, Docker 컨테이너를 실행시키고, 네트워크 설정을 통해 외부에서 접근가능하게 하는 설정까지를 시도하여 간단하게 배포하는 방법을 간략하게 다루어보도록 하겠다. 해당 포스팅에서는 Docker에 대한 자세한 설명은 다루지 않으므로, Docker에 대해서 모른다면 블로그 내의 다른 Docker 관련 포스팅을 참고하자. 무엇을 할 것인가 해당 포스팅은 AWS 프리티어의 한도 안에서 서버를 구축하는 것을 목표로 한다. 즉 RDS, LB 등 비용이 필요한 다른 AWS의 기능들 없이 가장 간단한 형태로 웹 애플리케..
이번 포스팅에서는 기존에 http로만 접속 가능했던 배포 API를 SSL 인증서를 적용하여 https로 접속 가능하게 만들고, 로드밸런서를 적용을 통해 HTTPS 및 부하 분산을 적용시키는 것을 다룰 것이다. 로드밸런서 로드밸런서는 여러 대의 백엔드 서버 또는 인스턴스 그룹 사이에서 들어오는 트래픽을 분산하는 역할을 한다. NginX 등이 리버스 프록시로서의 로드밸런서의 역할을 할 수 있으며, GCP 또한 클라우드 내에서 로드밸런서 장착을 지원한다. 리버스 프록시 리버스 프록시는 클라이언트와 백엔드 서버 사이에 위치하여, 백엔드 서버의 포트, 리소스 자원 등의 노출을 방지하고 보안을 강화할 수 있다. SSL 종단점 설정을 통해 암호화된 연결(HTTPS)을 처리가 가능하다. TLS/SSL 종단점: HTTP..
이번에는 앞서 배포해보았던 인스턴스에 도메인을 연결하여, IP가 아닌 도메인으로 접근 가능하도록 만들어보려고 한다. DNS 영역 만들기 구매한 도메인을 백엔드 서버와 연결시키려고 한다. 메뉴->네트워킹->Cloud DNS->영역 만들기에 들어가 DNS 영역을 만들자. 영역 이름을 작성하고, DNS 영역 이름에 구매한 도메인 이름을 작성해주자. DNS 영역의 리소스 레코드 성공적으로 DNS 영역을 만들었다면 다음과 같은 화면이 보일 것이다. 아래쪽에 리소스 레코드들이 모여있는 레코드 모음이라는 곳이 보일 것이다. SOA 레코드 : Start Of Authority, DNS 영역을 만들때 기본적으로 등록되는 레코드, 도메인의 시작점이며 관리 권한이 시작되는 곳이다.. NS 레코드 : NameServer, 도..
이전 포스팅에서 GCP에서 VM 인스턴스를 사용하여, Docker를 이용하여, API 서버 및 데이터베이스를 구축하는 과정을 살펴보았었다. https://sjh9708.tistory.com/95 [GCP] Node.js(NestJS) 프로젝트를 Docker를 이용하여 클라우드 배포해보기 Google Cloud Platform (GCP)은 Google이 제공하는 클라우드 컴퓨팅 서비스 플랫폼이다. 비슷한 경쟁사로는 AWS, Azure 등이 있다. 해당 포스팅에서는 Docker를 이용하여, GCP 인스턴스에 배포하는 방법을 간략 sjh9708.tistory.com 그렇다면 이번 포스팅에서는, Docker를 이용해서는 API 서버만 구축하고, 데이터베이스를 GCP에서 제공해주는 클라우드 관리형 데이터베이스로 ..