전체 글 109

[DevOps] CI/CD란 무엇인가, Docker환경에서의 CI/CD

CI/CD가 필요한 이유 결론부터 요약하자면, 빠른 배포속도와 유연한 반영을 기반으로 하는 효율성이다. CI/CD는 애플리케이션 개발 단계를 자동화하여 보다 짧은 주기로 변경을 제공하여 전반적 개발 프로세스의 효율성과 지속성을 보장하는 것이다. 그리고 ‘빌드-테스트-배포’의 자동화 프로세스를 통해 수동작업을 줄이고 오류 위험을 최소화 한다. CI와 CD를 묶어서 CI/CD 파이프라인을 구축하면 애플리케이션의 통합 및 테스트 단계에서부터 제공 및 배포까지 전체 라이프사이클에 걸친 자동화 및 모니터링이 가능하다. CI/CD를 사용하면 얻을 수 있는 장점 CI (Continuous Integration) CI는 애플리케이셩의 다양한 기능 부여와 서로 다른 모듈까지 동시에 여러 개발자가 작업 가능하도록 구성하는..

DevOps 2024.04.18

GitHub - Discord 웹훅 설정하기

1. 디스코드 채널 설정에서 웹후크 만들기를 클릭 2. 봇의 이름과 웹훅 알림이 갈 채널을 설정하고 URL을 복사 3. Github에서 Repository 설정에서 Webhooks에서 Add webhook 클릭 4. Discord에서 복사한 URL을 추가하고 뒤에 /github 추가. (****은 예시) ** 반드시 Content type을 Json으로 설정해야 한다 ** 5. Indivisual select로 해당 내용만 웹훅 알람 받을 수 있도록 설정 이렇게 연동을 마치고 나면 PR에 관련된 내용(코멘트, 리뷰 등)을 디스코드 채널로 알림을 받을 수 있다.

보틀노트 2024.04.17

[BottleNote] Jasypt로 yaml 파일 암호화하기

Jasypt란 Jasypt is a java library which allows the developer to add basic encryption capabilities to his/her projects with minimum effort, and without the need of having deep knowledge on how cryptography works. Jasypt 는 개발자가 깊은 지식이 없이도 최소한의 노력으로 자신의 프로젝트에 기본적인 암호화 능력을 가질 수 있도록 하는 자바 라이브러리이다. 즉, application.yaml에 저장해야 하는 데이터베이스 비밀번호와 같은 프로퍼티 값을 암호화시킬 수 있는 기능을 제공한다. 1. config 파일 추가 아래와 같이 Config파일..

보틀노트 2024.04.11

[BottleNote] Docker로 공통 개발환경 세팅하기(Docker volume)

최근 BottleNote라는 사이드 프로젝트를 시작했다. 데이터베이스 설계를 마치고 개발환경을 세팅하는데, 각 개발자들마다 버전도 다르고 각각 다른 환경에서 개발하는 것이 불편했다는 의견이 많았다. 그래서 그 해결책으로 도커를 활용해서 컨테이너 기반의 공통 된 개발환경을 세팅했다. 일단 첫번째로, Docker-compose를 사용해서 개발에 필요한 MySQL과 Redis를 하나의 컨테이너로 말아서 가동한다. 아래와 같이, MySQL 8.0 버전, Redis 6.2.6-alpine 버전으로 세팅했다. 환경변수로 잡혀있는 DB 패스워드와 같은 민감정보는 gitignore로 설정되어 있는 .env 파일로 숨긴다. 포트는 각 개발자들의 로컬 환경에 이미 3306 포트로 잡혀있는 db가 있을 수도 있기 때문에 E..

보틀노트 2024.04.11

[Docker] docker-compose로 여러 컨테이너 동시에 실행하기

Docker compose docker compose는 쿠버네티스와 같이 컨테이너 오케스트레이션 및 컨테이너화 된 애플리케이션 관리에 널리 사용되는 도구이다. docker compose는 다중 컨네이너 Docker 애플리케이션을 정의하고 실행하기 위한 도구이고, yaml파일을 사용하여 애플리케이션 서비스를 수행한다. 이후 docker compose CLI를 이용해서 모든 서비스의 라이프사이클을 관리한다. services: db: image: mysql:8.0 container_name: docker_compose_db volumes: - ./db/mysql/data:/var/lib/mysql - ./db/mysql/init:/docker-entrypoint-initdb.d command: - '--cha..

DevOps 2024.04.10

[Docker] SpringBoot 컨테이너 + MySQL 컨테이너 연동하기

1. 도커 네트워크를 설정해야 한다. 도커 네트워크는 Default가 Bridge로 설정되어 있다. docker network create 명령어를 사용해서 docker-network 라는 도커 네트워크를 생성한다. 2. MySQL 8.0 이미지 생성 아래와 같이 docker pull mysql:8.0 명령어를 통해 mysql 8.0 버전의 이미지를 docker hub에서 pull 받는다. 3. docker-network 와 연동하여 컨테이너 실행 아래와 같이 -d 옵션으로 백그라운드 실행, --name 옵션으로 mysql이라는 컨테이너 이름을 부여하고, -e 옵션으로 환경변수로 잡혀있는 MYSQL_ROOT_PASSWORD를 매개변수로 전달하고 컨테이너를 실행한다. docker ps -a로 실행중인 컨테..

DevOps 2024.04.09

[Docker] SpringBoot + Gradle를 도커 컨테이너로 만들어보자(Dockerfile)

Dockerfile을 만들어서 이미지를 만든 후, 이미지를 컨테이너화 하여 Spring 애플리케이션을 구동하는 예제를 구현해볼 것이다. 1. 아래와 같이 문자열을 반환하는 간단한 컨트롤러를 만들어준다. 2. Dockerfile을 최상위 Root 위치에 작성한다. Base이미지는 openjdk:!7-jdk를 사용했다. COPY ${JAR_FILE} app.jar: 이 명령어는 호스트 시스템의 파일을 Docker 이미지 내부로 복사한다. ${JAR_FILE}은 이전에 정의한 인자를 사용하여 환경변수를 참조한다. 이는 Gradle 빌드 후 생성된 .jar 파일을 Docker 이미지 내부의 app.jar로 복사한다. ENTRYPOINT ["java","-jar","/app.jar"]: 이 명령어는 컨테이너가 시..

DevOps 2024.04.08

[Docker] VM가상화와 컨테이너 가상화의 차이

VM가상화와 컨테이너 가상화의 차이 두 가상화 모두 실행하고자 하는 애플리케이션의 프로세스 및 종속 요소와 소스 등을 패키지, 즉 이미지화 하여 HostOS와 격리된 환경을 제공한다. VM 가상화는 호스트 운영체제와 같이 별도의 GuestOS를 두고, 원하는 애플리케이션을 설치하는 하드웨어 수준의 가상화를 구현 Host의 하드웨어 리소스 자원을 각 GuestOS가 공유 컨테이너 가상화는 VM가상화에 비해 경량이면서 호스트 운영체제의 커널을 공유하는 운영체제 수준의 가상화를 구현 Host운영체제의 커널을 공유하는 Docker Engine이 존재함. 더 빠르고 경량 VM은 OS의 부팅과정이 필요하다. 부트로더가 커널을 호출하고, Systemd 데몬이 호출되는 등의 과정이 필요하지만, 컨테이너는 프로세스이기 ..

DevOps 2024.04.08

[Docker] 컨테이너 기술이란

사이드 프로젝트 [보틀노트]에서 docker-compose.yaml을 작성해서 redis와 mysql을 컨테이너화해서 구성하는 작업을 하고 있다. 구글링해서 docker-compose.yaml파일 간단히 긁어와서 테스트 몇번 하면 끝나는 거지만, 도커라는 기술에 대해서 제대로 알고 싶어졌다. 컨테이너 기술은 요즘 대세인 MSA의 근간이 되는 기술이기 때문에 기초를 탄탄하게 알아야 한다는 생각이 들어서, 패스트캠퍼스 강의를 듣고 핵심 내용을 정리한다. 컨테이너 기술이란 컨테이너는 애플리케이션을 언제든 실행 가능하도록 필요한 요소를 하나의 런타임 환경으로 패키징한 논리적 공간을 말한다. 애플리케이션과 종속항목을 하나로 묶어서 실행하게 해주는 운영시스템을 가상화한 경량화된 격리 프로세스이다. 핵심은 바로 경량..

DevOps 2024.04.08

정보처리기사 + SQLD 합격후기 및 느낀점

나는 현재 정보처리기사 + SQLD를 취득했다. 그 과정에서 느낀점들을 기록하고 회고하고자 포스팅을 한다. 1. 정보처리기사는 더이상 면허증이 아니다. 군대를 제대하고 복학했을 당시 2020년도에만 해도 정보처리기사는 거의 면허증 취급이었다. 대부분의 선배들이 정보처리기사는 따도 아무런 도움이 되지 않는다고 따지 말라고 했다. 하지만 지금은 아니다. 2020년에 시험이 개편돼서 50%에 육박하던 합격률이 최근 20%도 안나올만큼 난이도가 급상승했기 때문이다.(내가 합격한 2023년도 3회차 시험은 실기 합격률이 17%였다. 맞다 이건 자랑이다! ㅎㅎ). 나는 국가가 공인하는 자격증이라면 어떤것이든 있으면 좋다고 (없는 것 보다는) 생각했고, 컴퓨터 관련 전공자로써 4년을 공부했으면 정보처리기사는 취득하고..

일기 2024.03.29