1. Jenkins 플러그인 설치 우선, Jenkins와 Gitlab을 연동하여 CI/CD를 구축하기 위해선 다음 플러그인을 설치해야 합니다. 1. Bitbucket Pipeline for Blue Ocean 2. Dashboard for Blue Ocean 3. Personalization for Blue Ocean 4. Display URL for Blue Ocean 5. Server Sent Events (SSE) Gateway 6. Events API for Blue Ocean 7. Blue Ocean Pipeline Editor 8. i18n for Blue Ocean 9. Autofavorite for Blue Ocean 10. Blue Ocean 11. NodeJS 12. GitLab 13...
1. Ubuntu에 Jenkins 설치하기 Ubuntu 쉘에 접속했다고 가정하겠습니다. 원하는 경로로 이동 후, 다음과 같이 Dockerfile을 작성합니다. FROM jenkins/jenkins:jdk11 # 도커를 실행하기 위한 root 계정으로 전환 USER root # 도커 설치 COPY docker_install.sh /docker_install.sh RUN chmod +x /docker_install.sh RUN /docker_install.sh # 설치 후 'docker' 라는 이름의 그룹을 만든 후, jenkins 계정 생성 후 해당 그룹으로 변경 RUN groupadd -f docker RUN usermod -aG docker jenkins USER jenkins 그 후, 위 Docker..
1. 도커란? 도커는 애플리케이션을 컨테이너화 하여 Host OS와 독립적으로 실행하는 기술입니다. Linux, Windows 등 어떤 OS든 상관없이 컨테이너화된 소프트웨어는 항상 동일하게 실행됩니다. (SW를 환경으로부터 격리) 2. 도커와 기존의 가상화 기술과의 차이 혹시 도커 이전에도 이런 SW 가상화 기술이 존재했었단 사실을 알고 계신가요? 도커 이전에 가장 많이 쓰였던 방식은 VirtureBox와 같은 가상 머신 위에 VM을 띄우는 하이퍼 바이저 방식입니다. 두 방식의 특징은 다음과 같습니다. 도커 (컨테이너 방식) 도커 컨테이너에서 돌아가는 애플리케이션은 컨테이너가 제공하는 격리 기능 내부에 샌드박스가 있지만, 여전히 Host와 OS 커널을 공유합니다. 따라서, 컨테이너 내부에서 실행되는 프..
이전 글과 이어서 진행하겠습니다. ----> [CI CD] 테스트/빌드 자동화 Travis CI와 AWS S3 연동하기 AWS S3는 파일 서버다. 이미지 파일을 비롯한 정적 파일들을 관리하거나 배포 파일들을 관리하는 등의 기능을 지원한다. 보통 이미지 업로드를 구현하게되면 이 AWS S3를 이용하여 구현한다. 여기서 S3와 같은 파일 서버가 필요한 이유는 AWS CodeDeploy는 저장 기능이 없기 때문이다. Travis CI에서 빌드 결과물로 생성된 Jar 파일을 저장할 공간이 필요한데, 이를 S3가 담당한다. 참고자료 [1] 스프링 부트와 AWS로 혼자 구현하는 웹 서비스_이동욱 저
24시간 365일 운영되는 서비스에서 배포 환경 구축은 필수다. 여러 개발자의 코드가 실시간으로 병합되고, 테스트가 수행되는 환경, master 브랜치가 푸시되면 배포가 자동으로 이뤄지는 환경을 구축해보자. CI / CD란? CI(Continuous Integration - 지속적 통합) : 깃에 푸시가 되면 자동으로 테스트와 빌드가 수행되어 안정적인 배포 파일을 만드는 과정 CD(Continuous Deployment - 지속적 배포) : CI로 생긴 빌드 결과물(Jar)을 자동으로 운영 서버에 무중단 배포하는 과정 요약하면, 테스트/빌드/배포 자동화가 필요하다. 테스트와 빌드는 CI에서 담당하고, 배포는 CD에서 담당한다. Travis CI 연동하기 Travis CI는 깃허브에서 제공하는 무료 CI ..
1. RDS 생성 직접 서버에 DB를 설치해서 다루게 되면 모니터링, 알람, 백업, HA 구성 등을 모두 직접 해야한다. AWS의 RDS를 이용하면 위 작업들을 손쉽게 관리할 수 있다. RDS를 사용하면 하드웨어 프로비저닝, DB 설정, 패치 및 백업과 같이 잦은 운영 작업을 자동화하여 개발자가 개발에 집중할 수 있게 해준다. 추가로 스토리지 용량을 유동적으로 조정할 수 있기 때문에 예상치 못한 양의 데이터가 쌓여도 비용만 추가로 내면 정상적으로 서비스가 가능하다는 장점도 있다. DB 엔진은 MariaDB를 선택한다. 가격 RDS의 가격은 라이센스 영향을 받기 때문에 상용 DB인 오라클, MSSQL보다 오픈소스인 MySQL, MariaDB, PostgreSQL이 동일한 사양 대비 가격이 더 저렴하다. 추..
1. EC2 인스턴스 생성하기 타 블로그의 글로 대체한다. https://victorydntmd.tistory.com/61 2. EC2 서버에 접속하기 ssh를 통해서 접속을 할건데 그 전에 앞으로 ssh 접속을 쉽게하기 위한 두 가지 작업을 한다. ssh 접속을 위해 사용되는 pem 키 파일을 자동으로 읽을 수 있도록 ~/.ssh/로 옮기기. ssh 접속을 할때 IP가 아닌 호스트명으로 입력받을 수 있도록 설정하기. 기본적으로 ssh를 통해 접속하려면 아래의 명령어를 입력한다. 키위치의주소매번키위치를적어주는건귀찮으므로키페어파일을로복사한다여기놔두면자동으로키파일을읽는다 cp [pem 키 ..
DevOps 모델 정의 아마존은 DevOps 모델을 아래와 같이 정의한다. DevOps는 애플리케이션과 서비스를 빠른 속도로 제공할 수 있도록 조직의 역량을 향상시키는 문화 철학, 방식 및 도구의 조합입니다. 기존의 소프트웨어 개발 및 인프라 관리 프로세스를 사용하는 조직보다 제품을 더 빠르게 혁신하고 개선할 수 있습니다. DevOps의 이점 속도 작업 속도가 빨라지므로 더 빠르게 혁신하고, 시장 변화에 더 잘 적응하고, 더 효율적으로 비즈니스 성과를 창출할 수 있다. 마이크로 서비스와 CI/CD를 사용하면 팀에서 서비스를 주도적으로 운영하여 업데이트를 더 빠르게 릴리스할 수 있다. 신속한 제공 릴리스의 빈도와 속도를 개선하여 제품을 더 빠르게 혁신하고 개선할 수 있습니다. CI/CD는 빌드에서 배포까지..
Docker가 설치되어있다고 가정하고, MySQL 이미지를 다운받아 실행하는 과정을 정리해본다. 1. MySQL 이미지 검색 허브에 있는 이미지를 검색해서 공식 이미지를 다운받자. docker search mysql 2. MySQL 이미지 다운로드 버전을 명시하지 않으면 가장 최신 버전(latest)을 설치한다. docker pull mysql:8.0.17 3. 설치된 Docker 이미지 확인 docker images 4. MySQL 이미지를 기반으로 MySQL 컨테이너 생성 및 실행 docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password --name seungho-mysql mysql:8.0.17 위 명령어로 MySQL을 실행한 후, 한글 문제가 발생한..
인턴을 하면서 클라우드(AWS)를 처음으로 접해봤다. 아직은 되게 생소한데, 클라우드를 접하면서 가장 처음 맞닥뜨린 개념을 정리해보자. 클라우드 컴퓨팅은 가상화된 IT 리소스를 서비스로 제공하는 것을 말한다. 어떤 대상의 서비스를 제공하느냐에 따라서 종류가 나뉘며, 크게 3가지로 분류된다. Saas (Software as a Service) 소프트웨어를 서비스로 제공한다는 개념인데, 예를 들어, 웹 애플리케이션은 별도의 설치없이 브라우저를 통해 하나의 서비스로 사용될 수 있다. on demand software Iaas (Infrastructure as a Service) 인프라는 말그대로 IT 인프라를 말한다. 서버, 스토리지, 네트워크 등의 물리적 자원들을 서비스 형태로 제공한다는 의미다. 대표적으로..