개념 CI/CD (Continuous Integration/Continuous Delivery) 자동화하여 애플리케이션을 더욱 짧은 주기로 고객에게 제공하는 방법 CI/CD의 기본 목적은 지속적인 통합, 지속적인 서비스 제공, 지속적인 배포 CI/CD의 목적을 이해하기 위해서는 코드 배포의 과정을 먼저 이해할 필요가 있다. 코드 배포의 과정 프로그래밍의 목적은 결국 사용자에게 우리의 코드를 결과물로써 보여주는 것이다. 그렇다면 그 과정은 어떠할까? 1. 컴파일 컴파일이란 우리가 만든 프로그래밍 언어를 기계가 이해할 수 있는 언어로 번역하는 과정이다. 프로그래머가 사용하는 C, java 등의 언어는 기계가 이해할 수 없다. 이러한 언어는 컴파일러가 기계가 이해할 수 있게 도와준다. 이러한 과정을 컴파일이라..
9장에서 Travis CI를 활용해 배포 자동화 환경을 구축해 보았다. 하지만 배포하는 동안 애플리케이션이 종료된다는 문제가 남아있다. 긴 기간은 아니지만, 새로운 Jar가 실행되기 전까진 기존 Jar를 종료시켜 놓기 때문에 서비스가 중단됨. 반면 카카오톡 같은 서비스의 경우 배포하는 동안 서비스가 정지되지 않는다. 어떻게 서비스 중단 없이 배포를 걔속 할 수 있는지 이번장에서 해보자. 10.1 무중단 배포 소개 예전에는 배포라고 하면 팀의 아주 큰 이벤트이기 때문에 다 같이 코드를 합치는 날과 배포를 하는날을 정하고 진행하였다. 특히 배포일에는 사용자가 적은 새벽기간에 개발자들이 모두 남아 배포 준비를 해야만 했고 배포가 잦아질 때는 새벽마다 남아야했다. 더군다나 배포하고 나서 치명적인 문제가 발견된다..
24시간 365일 운영되는 서비스에서 배포 환경 구축은 필수 과제 중 하나이다. 여러개발자의 코드가 실시간으로 병합되고, 테스트가 수행되는 환경, master브랜치가 푸시되면 배포가 자동으로 이루어지지는 환경을 구축하지 않으면 실수할 여지가 많다. 9.1 CI & CD 소개 8장에서 스프링 부트 프로젝트를 간단하게 EC2에 배포해 보았다. 스크립트를 개발자가 직접 실행함으로써 발생하는 불편을 경험했다. 그래서 CI, CD환경을 구축하여 이 과정을 개선하려한다. CI(Continuous Integration - 지속적 통합) 코드버전 관리를 하는 VCS 시스템(Git, SVN)에 push가 되면 자동으로 테스트와 빌드가 수행되어 안정적인 배포 파일을 만드는 과정 CD(Continuous Deployment..
1 ~ 5장 스프링부트로 서비스 코드 개발 6 ~ 7장 배포 환경 구성. 이제 이들을 조합해 실제로 서비스를 배포해보자. 8.1 EC2에 프로젝트 clone 받기 git yum install git EC2에 git 설치 git --version git version 확인 mkdir ~/app && mkdir ~/app/step1 디렉토리 생성 git clone 깃허브프로젝트주소 프로젝트 깃헙에서 받아오기 ./gradlew test 로확인 chmod +x ./gradlew 권한 없다 뜨면 권한 주기 8.2 배포 스크립트 만들기 배포-> 작성한 코드를 실제 서버에 반영하는 것. 이 책에서는 배포라고 하면 다음의 과정을 모두 포괄하는 의미. git clone 혹은 git pull 을 통해 새 버전의 프로젝트 ..
웹 서비스의 백엔드를 다룬다고 했을 때 애플리케이션의 코드를 작성하는 것만큼 중요한 것이 데이터베이스를 다루는 일이다. 규모있는 회사에서는 DB를 전문적으로 처리하는 DBA라는 직군이있다. 그러나 이것이 백엔드개발자가 DB를 몰라도 된다는 것을 의미하지는 않음. 이번에는 EC2 서버와 연동을 해보자. 그러나 직접 DB를 설치하진 않음. 직접 DB를 설치해서 다루게 되면 모니터링, 알람 백업, HA구성등을 모두 직접 해야한다. 이는 처음에 며칠씩 걸릴 수 있는일. AWS에서는 앞에서 언급한 작업을 모두 지원하는 관리형 서비스인 RDS(Relational Database Service)를 제공. RDS는 AWS에서 지원하는 클라우드 기반 관계형 DB. 운영 작업을 자동화하여 개발자가 개발에 집중할 수 있게 ..
이제 AWS(Amazon Web Services)라는 클라우드 서비스를 이용해 본격적으로 서버 배포를 진행해 보자. 외부에서 본인이 만든 서비스에 접근하려면 24시간 작동하는 서버가 필수이다. 24시간 작동하는 서버는 3가지 선택지가 있다. 집에 PC를 24시간 구동시킨다. 호스팅 서비스(Cafe 24, 코리아 호스팅 등)을 이용한다. 클라우드 서비스(AWS, AZURE, GCP) 등을 이용한다. 일반적으로 비용이 싼 것 -> 호스팅 서비스, 집에서 돌리기(전반적으로 일정한 트래픽이 유지될때) 특정시간에만 트래픽이 몰린다면 -> 클라우드 서비스 ( 유동적으로 사양을 늘릴 수가 있다.) 클라우드 서비스 -> 클라우드(인터넷)을 통해 서버, 스토리지(파일 저장소), DB, Network, 소프트웨어, 모니터..