본문 바로가기

전체 카테고리361

CI/CD 구축하기(4) - 애플리케이션 배포 이번 챕터에서는 EC2 서버에 애플리케이션을 배포하는 방법에 대해서 알아보겠다. 깃허브에 runner를 세팅하고 build가 끝나면 EC2 서버에서 해당 runner를 실행하여 자동으로 배포가 되게 한다. 1. github action deploy job 추가 github action의 yml 파일에 deploy 관련 내용을 추가한다. 내가 실행할 도커 컨테이너의 이름은 spring-template이다. deploy 시 해당 도커 컨테이너가 올라와있으면 중단 후 이미지를 삭제한다. 그리고 도커 허브에 올려놓은 이미지를 받아와서 컨테이너를 서버에 올린다. name: Java CI with Gradle on: push: branches: [ master ] pull_request: branches: [ ma.. 2021. 9. 1.
CI/CD 구축하기(3) - 텔레그램 알림 설정 이번편에서는 docker image가 docker hub에 업로드 되면 텔레그램으로 알림을 받을 수 있게 설정하겠다. 1. 텔레그램 token 및 chnl_id 조회 텔레그램을 github action에서 사용하기 위해서는 텔레그램 token과 해당 채널 id를 조회해야한다. token을 구하기 위해서는 먼저 BotFather을 이용하여 bot을 생성해야한다. https://web.telegram.org/k/ 에 접속해서 BotFather을 검색하자 우측 대화창 부분에 아래와 같이 대화를 시작할 수 있는 창이 보이는데 여기서 START 를 눌러 대화를 시작한다. 아래와 같이 사용할 수 있는 명령어들이 쭉 나열된다. 이제 봇의 name 과 username 을 입력한다. name 은 봇을 부르는 이름이다. .. 2021. 8. 25.
CI/CD 구축하기(2) - Docker Hub 이번편에서는 지난 CI/CD 구축하기(1) - Github Action 이란? 에서 빌드한 결과를 Docker 이미지로 만들어서 Docker Hub에 push 해보는 과정까지 진행해보겠다. 1. Docker Hub 회원 가입 및 토큰 발행 먼저 Docker Hub에 접속해서 회원 가입 및 로그인을 한다. Docker Hub에서는 소스 코드를 깃허브에 올려서 관리하는 것 처럼, 빌드한 도커 이미지를 Docker Hub에 저장해서 사용할 수 있도록한다. Github Action에서 Docker에 이미지를 올리기 위해서 인증 token을 발행한다. 토큰 발행하는 방법은 여기를 참고한다. 2. Github Action Docker 이미지 PUSH github repository의 Settings -> Secre.. 2021. 8. 25.
CI/CD 구축하기(1) - Github Action 이란? 1. GitHub Action 이란? Github Action이란 Github 저장소를 기반으로 소프트웨어 개발 Workflow를 자동화 할 수 있는 도구이다. Github 내부에서 프로젝트를 빌드, 테스트, 릴리즈 또는 배포를 지원하는 기능으로서, Github에서 제공하는 CI/CD 도구라고 생각하면 된다. 여기를 클릭하면 GitHub Action 공식 문서로 이동할 수 있다. 2. GitHub Action 4가지 주요 개념 Github Action에는 4가지 주요 개념이 존재한다. 이들의 관계와 흐름을 이해해야만 각종 조건과 그에 따른 액션을 스스로 정의할 수 있다. 2.1 Workflow Workflow는 프로젝트를 빌드, 테스트, 패키지, 릴리스 또는 배포하기 위한 전체적인 프로세스이다. Work.. 2021. 8. 25.
[Effective Java] 아이템73 추상화 수준에 맞는 예외를 던지라 ■ 추상화 수준에 맞는 예외를 던져라 수행하려는 일과 관련 없이 보이는 예외가 튀어나오면 당황스러울 수 있다. 메서드가 저수준 예외를 처리하지 않고 바깥으로 전파해버릴 때 종종 일어나는 일이다. 이는 내부 구현 방식을 드러내어 윗 레밸 API를 오염시킨다. 이 문제를 피하려면 상위 계층에서는 저수준 예외를 잡아 자신의 추상화 수준에 맞는 예외로 바꿔 던져야한다. 이를 예외 번역이라 한다. try { // ... } catch (LowerLevelException e) { throw new HigherLevelException(); } 예외 연쇄 예외를 번역할 때, 저수준 예외가 디버깅에 도움이 된다면 예외 연쇄를 사용하는게 좋다. 근본 원인이 되는 저수준 예외를 고수준 예외에 실어 보내는 방식(Throw.. 2021. 8. 22.
[Effective Java] 아이템72 표준 예외를 사용하라 ■ 표준 예외를 사용하라 표준 예외를 사용하면 다른 개발자들이 익히고 사용하기 쉬워진다는 장점이 있다. 또한 예외 클래스의 수가 적을수록 메모리 사용량도 줄고 클래스를 적재하는 시간도 적게 걸린다. Exception, Throwable, Error, RuntimeException 은 직접 재사용하지 말자. 이 클래스들은 추상 클래스라고 생각하길 바란다. 이 예외들은 다른 예외들의 상위 클래스이므로 안정적으로 테스트할 수 없다. 다음 표는 널리 재사용하는 예외들이다. IllegalArgumentException 허용되지 않는 값이 인수로 건내졌을때(null이면 NullPointException을 사용) IllegalStateException 객체가 메소드를 수행하기 적합하지 않은 상태일때 NullPoint.. 2021. 8. 22.