목록배포 (53)
개발놀이터
실제 환경을 모니터링하는 것은 매우 중요한 것으로 알려져있습니다. 물론 항상 모니터링 하진 않겠지만 중요한 서비스를 배포해야 한다거나 버그를 고치고 난 뒤에 모니터링을 통해 실제 환경에 잘 녹아들었는지 확인해야합니다. 이번 포스팅에선 실제 배포된 환경을 프로메테우스와 그라파나로 연동하여 CPU 사용량, 메모리 사용량, 디스크 사용량, HTTP 트래픽 등을 모니터링하는 환경을 구축해보도록 하겠습니다. 모니터링 환경 구축 우리가 최종적으로 목표하는 것은 바로 아래와 같은 환경을 구축하는 것입니다. 도커를 이용해 프로메테우스를 띄우고 그라파나도 띄운 다음 모니터링 하는 것이죠. 그리고 이것이 모두 이루어지면 나만의 모니터링 시스템을 만들 수 있습니다. 이렇게 만들기 위해서 먼저 우리는 준비물이 필요합니다. 도..
이번 포스팅에선 warm up에 대해서 알아보도록 하겠습니다. 자바에선 JVM의 존재 때문에 항상 느린 언어 취급을 받아야 했습니다 (실제로도 느린건 사실입니다). 하지만 그런 느린 언어라는 누명을 벗기위해 다양한 노력을 시도했습니다. 언어적으로 노력한 부분도 있고 자바를 사용하는 개발자들의 꼼수(?)로 자바는 생각보다 컴파일언어 (C, C++, Rust) 와 견줄만한 속도를 가지게 되었습니다. 우리는 이번 포스팅에선 warm up 이라는 개념이 왜 등장했는지 클래스 로더와 JIT 컴파일러의 관점에서 알아보고, warm up을 어떻게 진행하는지 방법에 대해서 알아보도록 하겠습니다. 클래스 로더 자바에서는 클래스를 읽어오기 위해 클래스 로더를 이용합니다. 클래스 로더는 클래스 파일을 찾고, 메모리에 로드해..
여러분들이 배포를 진행하는데 어떤 배포 방법을 사용하는지에 따라 다르겠지만 기존 배포했던 서버를 내려야 하는 상황이 생길 것입니다. 만약 블루그린 배포를 진행했다고 가정하면 새로 올릴 서버를 띄운 다음 기존 서버를 죽여야하는 상황이 생기겠죠? 그 때 그냥 서버를 죽여버리면 사용자는 굉장히 난처한 상황에 놓일 것입니다. 혹시라도 그 사용자가 결제를 진행하고 있다가 서버가 내려가서 결제가 취소된다면 부정적인 사용자 경험으로 이어질 수 있습니다. 하지만 그런 상황이라면 조금 기분 나쁘고 말겠지만 결제가 진행되고 있는 도중 (API에 요청을 보내서 처리하고 있던 도중) 서버가 내려가버리면 이건 예외상황에 의해 트랜잭션이 롤백되는 것이 아니기 때문에 개발자 입장에서도 처리하기 난처한 상황입니다. 그렇기 때문에 G..
이번 포스팅에선 윈도우에서 도커를 사용하는 방법에 대해서 포스팅해보도록 하겠습니다. 흔히 알려지기로는 도커는 리눅스 환경에서만 동작하기 때문에 신입 기준 러닝커브가 있는 편이라고 하죠. 어? 그럼 윈도우에선 어떻게 동작하지? 바로 WSL 이라는 기술을 이용하면 됩니다. WSL은 Windows Subsystem for Linux 2 의 약자로 쉽게 말해서 윈도우에서 리눅스를 사용할 수 있게 해주는 기술입니다. 이제 WSL을 이용해서 윈도우에서 도커를 사용해봅시다. 윈도우에서 도커 설치 우선 WSL2를 다운받아야합니다. 그러기 위해선 윈도우 터미널인 power shell이라는 것을 다운받아야 하는데요. 파워 쉘은 다운받기 정말 간단합니다. 마이크로소프트 스토어에서 다운받으면 됩니다. 파워 쉘 다운 저는 이미..
프로젝트를 진행하다가 EC2 용량이 꽉차서 조금 당황했습니다. 어라.. 미디움이면 충분하다고 했는데... 네 생각보다 많은 이미지와 꽤 큰 프로젝트 용량 덕분에 용량이 다 차버려서 진행이 안됐습니다. 때문에 구글링한 결과를 공유하려고 합니다. EC2 용량 부족시 해결법 먼저 용량이 얼마나 남았는지를 봅니다. 7.6기가가 꽉 찼네요. EC2 인스턴스에 들어가서 인스턴스 클릭 후 스토리지를 클릭합니다. 볼륨 ID를 클릭해주고 볼륨을 우클릭 후 수정 후 원하는 사이즈로 적습니다. lsblk 명령어를 치면 xva 스토리지는 12기가로 늘어났지만 우리가 사용하는 xvda1 섹션이 아직 7.9기가입니다. 이걸 늘려줘야합니다. 위의 명령어를 치시구요. 이렇게 치면? 짠 Size가 12기가로 늘어났습니다. 여기까지 E..
이전 포스팅과 이어집니다. https://coding-review.tistory.com/414 CI / CD 자동화 (2) : Jenkins 시작하기 앞선 포스팅과 이어지는 내용입니다. https://coding-review.tistory.com/413 CI / CD 자동화 (1) : Jenkins vs Github Action 이전 포스팅을 보고 오시면 더 이해하기 쉽습니다! https://coding-review.tistory.com/410 Docker + Ngin coding-review.tistory.com 이제 본격적으로 파이프라인을 만들어보겠습니다. Github project를 클릭하시고 아래에 자신의 github 리포지토리 주소를 입력합니다. 주의해야하는 점은 맨 마지막에 / (슬래쉬) 반드..
앞선 포스팅과 이어지는 내용입니다. https://coding-review.tistory.com/413 CI / CD 자동화 (1) : Jenkins vs Github Action 이전 포스팅을 보고 오시면 더 이해하기 쉽습니다! https://coding-review.tistory.com/410 Docker + Nginx를 이용해 스프링 프로젝트 무중단 배포하기 : 과정 저번 포스팅에선 docker + nginx를 가지고 무중단 배포 coding-review.tistory.com 저는 EC2 환경에서 Linux 22.04 LTS 버전을 이용해 Jenkins를 구축했습니다. 이 점 참고하시기 바랍니다. Jenkins를 우분투 환경에서 시작하는 방법에는 두가지가 있습니다. 직접 설치 docker를 이용해 ..
이전 포스팅을 보고 오시면 더 이해하기 쉽습니다! https://coding-review.tistory.com/410 Docker + Nginx를 이용해 스프링 프로젝트 무중단 배포하기 : 과정 저번 포스팅에선 docker + nginx를 가지고 무중단 배포를 하는 방법에 대해서 설명한 것이구요. 이번 포스팅에선 전체적인 과정에 대해서 알아보도록 하겠습니다. 이번 포스팅은 아래와 같은 순서 coding-review.tistory.com 이번 포스팅에선 Jenkins를 시작하는 방법에 대해서 포스팅해보도록 하겠습니다. 이전 포스팅에서 블루 그린 배포를 성공적으로 완료했지만 문제가 있었습니다. 그것은 바로 엄청나게 복잡한 배포 과정인데요. 잠깐 이전 포스팅 내용을 정리하자면 우리의 블루 그린 배포는 다음과 ..
저번 포스팅에선 docker + nginx를 가지고 무중단 배포를 하는 방법에 대해서 설명한 것이구요. 이번 포스팅에선 전체적인 과정에 대해서 알아보도록 하겠습니다. 이번 포스팅은 아래와 같은 순서로 이뤄집니다. 스프링 프로젝트에서 무언가 변경 (ver.2) git commit / push EC2 에서 프로젝트 폴더에 들어간 뒤 git pull ./gradlew build 내 프로젝트를 docker image로 build 도커 허브에 방금 만든 이미지 push docker-compose.yml 파일에서 버전 변경 deploy.sh 실행 결과부터 말씀드리자면 이 과정 굉장히 복잡합니다. 그리고 굉장히 귀찮습니다. 일단 이번 포스팅에선 과정을 보여드리고 다음엔 jenkins를 이용해 CI / CD 파이프라인..
이번 포스팅에선 docker-compose 에서 사용되는 주요 문법들에 대해서 포스팅해보도록 하겠습니다. 요즘 docker에 빠져있는데요. docker는 작은 프로젝트에 한해선 단점이 하나도 없는 좋은 기술인 것 같습니다. docker-compose는 docker의 다양한 설정들을 보기쉽게 정리하고 나중에 설정이 바뀌었을 때 유지보수도 쉽게 도와주는 docker의 좋은 파트너입니다. 보통 docker-compose는 yml (야믈) 파일로 저장되는데요. 그렇기 때문에 우리가 스프링에서 application.yml 을 써봤다면 조금은 익숙하실겁니다. 이제 본격적으로 시작해보죠! docker-compose 문법 1. image docker-compose 안에서 이미지를 선택할 수 있습니다. 만약 로컬에 있는..