분류 전체보기 555

Grafana 시작하기

https://coding-review.tistory.com/436 Docker로 Prometheus, Grafana 배포하기 실제 환경을 모니터링하는 것은 매우 중요한 것으로 알려져있습니다. 물론 항상 모니터링 하진 않겠지만 중요한 서비스를 배포해야 한다거나 버그를 고치고 난 뒤에 모니터링을 통해 실제 환경 coding-review.tistory.com 이전 포스팅과 이어집니다. 우리는 앞서 프로메테우스, 그라파나, node-exporter까지 준비를 완료했습니다. 이제 그라파나를 어떻게 사용하는지 천천히 알아보도록 하죠. 그라파나 시작하기 그라파나를 처음 시작하면 다음과 같은 화면이 보입니다. 디폴트 계정은 ID : admin PW : admin 이렇게 되어있으니 로그인 하시면 됩니다. 로그인 후 비..

DevOps/Docker 2023.07.17

Docker로 Prometheus, Grafana 배포하기

실제 환경을 모니터링하는 것은 매우 중요한 것으로 알려져있습니다. 물론 항상 모니터링 하진 않겠지만 중요한 서비스를 배포해야 한다거나 버그를 고치고 난 뒤에 모니터링을 통해 실제 환경에 잘 녹아들었는지 확인해야합니다. 이번 포스팅에선 실제 배포된 환경을 프로메테우스와 그라파나로 연동하여 CPU 사용량, 메모리 사용량, 디스크 사용량, HTTP 트래픽 등을 모니터링하는 환경을 구축해보도록 하겠습니다. 모니터링 환경 구축 우리가 최종적으로 목표하는 것은 바로 아래와 같은 환경을 구축하는 것입니다. 도커를 이용해 프로메테우스를 띄우고 그라파나도 띄운 다음 모니터링 하는 것이죠. 그리고 이것이 모두 이루어지면 나만의 모니터링 시스템을 만들 수 있습니다. 이렇게 만들기 위해서 먼저 우리는 준비물이 필요합니다. 도..

DevOps/Docker 2023.07.17

스프링 Redirect 시 HTTPS 접근이 아니라 막히는 현상

배포 버전에서 HTTPS 접근이 아닌 HTTP 접근이기 때문에 넘어갈 수 없다는 페이지를 만났습니다. 때문에 다음으로 넘어가야 하는 상황에서 다음으로 넘어가지 못하고 멈추는 상황이 반복되었습니다. 이는 반드시 해결해야 하는 문제였기 때문에 어떤 부분이 문제일까 고민했습니다. 문제에 대해 몇가지 해결책이 떠올랐습니다. HttpServletResponse 객체를 받아와서 sendRedirect로 바꾼다. 로드밸런서의 80포트를 HTTPS로 열어준다. 1번같은 경우는 시도해봤지만 다시 페이지로 리턴해야 하는 상황이었어서 성공하지 못했습니다. 때문에 2번으로 넘어갔습니다. "HTTPS 요청이 와야하는데 HTTP 요청이 왔다는 얘기니까 HTTP 요청을 HTTPS로 바꿔주면 되는거 아냐?" 접근 자체는 좋았지만 이..

첫 회고, 개발 공부 2년만에 뒤를 돌아보다.

회고를 일기에 쓰려고 하려다 회고는 아무래도 시간이 좀 지나고 적는 일기이다 보니 큰 일기(?) 느낌으로 회고 카테고리를 만들었습니다. 첫 회고는 앞만보고 미친듯이 달린 개발 공부 2주년을 기념하여 처음으로 뒤를 돌아봤습니다. 회고를 작성하면서 가장 마음에 들었던 점은 제가 문서화를 잘해놔서 연도와 날짜를 정확하게 알 수 있었다는 점입니다. 연도 별로 어떤 일이 있었는지 큼지막하게 적어보도록 하겠습니다. 2021년 6월 20일 개발 공부를 시작하다. 처음으로 개발공부라는걸 해봤습니다. 2021년 상반기에 했던 프로젝트가 자바 기반 프로젝트였기 때문에 자바를 중점적으로 공부해보고 싶었습니다. 굳이 자바였던 이유는 자바가 취직이 잘된다고 하길래... 첫 공부는 jsp 였는데 그 때 당시 남겨놨던 문서를 보면..

기타/회고 2023.07.11

ACM + ALB 를 이용해 HTTPS 적용하기 (2)

이전 포스팅과 이어집니다. https://coding-review.tistory.com/432 ACM + ALB 를 이용해 HTTPS 적용하기 (1) 이번 포스팅에선 AWS에서 HTTPS 적용하는 방법에 대해서 포스팅해보도록 하겠습니다. 조금 복잡할 수 있으니 순서대로 차근차근 알려드리겠습니다. 시작하죠! HTTPS 적용하기 1. 도메인 구매하기 우 coding-review.tistory.com 5. ELB (ALB) 설정하기 로드 밸런서는 EC2 왼쪽 탭 아래쪽에 존재합니다. 우리는 ALB 를 선택할겁니다. Application Load Balancer 를 선택합니다. 우선 로드밸런서 이름을 작성하고요. 네트워크 매핑은 자신의 EC2가 어떤 지역에 떠있는지에 따라 선택해야 하는것이 다릅니다. (사실 네..

ACM + ALB 를 이용해 HTTPS 적용하기 (1)

이번 포스팅에선 AWS에서 HTTPS 적용하는 방법에 대해서 포스팅해보도록 하겠습니다. 조금 복잡할 수 있으니 순서대로 차근차근 알려드리겠습니다. 시작하죠! HTTPS 적용하기 1. 도메인 구매하기 우선 도메인을 구매해야합니다. 저는 cafe24에서 구매했습니다. 우선 구매하고 잠심 대기해주세요. 도메인의 네임서버를 바꿔줘야하는데 지금은 바꾸지 않습니다. 2. Route 53 도메인 등록 유형 NS를 클릭하면 레코드 세부 정보가 나오는데 값에 해당하는 저 네개를 cafe24 관리자 페이지에 들어가 네임서버를 변경해주면 됩니다. 연결하는 방법은 아래의 링크에 자세히 나와있습니다. https://jsikim1.tistory.com/153 AWS에 Cafe24 도메인 연결하는 방법 - Route 53, EC2..

온라인 쇼핑몰 ver.3 (4) 클래스 로더 Warm Up, JIT 컴파일러 Warm Up

0. Introduce 배포를 진행할 때 고려해야 하는 점을 공부하다 Warm Up 이라는 개념에 대해서 알게 되었습니다. 그리고 클래스 로더, JIT 컴파일러를 Warm Up 하는 방법에 대해서 학습하고 실습했습니다. 1. 기존 프로젝트의 배포 배포를 진행하고 클래스 로더의 지연로딩, JIT 컴파일러의 활성화 조건을 만족하지 않았습니다. 2. 기존 프로젝트의 문제 배포를 하고 난 조금 뒤에는 지연 시간이 안정되지만 배포를 한 직후에는 지연 시간이 많이 발생할 수 있는 문제점을 파악했습니다. 3. ver.3 에서 해결한 점 ApplicationRunner를 구현함으로써 클래스 로더의 지연 로딩을 해결했습니다. Jenkins의 CI 파이프 라인에서 curl 명령어를 통해 많은 요청이 예상되는 API를 wa..

온라인 쇼핑몰 ver.3 (3) Graceful Shutdown

0. Introduce 블루 그린 배포까지 성공적으로 완료했고 Jenkins라는 CI 자동화 툴로 자동화까지 성공했습니다만 실전에서는 어떻게 배포를 하는지에 대해서 궁금해졌습니다. 때문에 Graceful Shutdown을 도입하게 되었습니다. 1. 기존 배포 블루 그린 배포에서 이전 버전이 내려가고 새로운 버전이 올라간다. 2. 기존 배포의 문제점 블루 => 그린으로 배포하는 과정에서 이전 버전을 갑자기 닫아버리면 이전 버전을 이용하고 있던 사용자의 시스템이 멈춰버립니다. 이 때 결제를 진행하고 있다거나 데이터베이스를 이용하는 로직 도중 서버가 내려가버리면 트랜잭션이 에러에의해 롤백되는 것이 아니기 때문에 도중에 로직이 멈춰버릴 가능성이 있습니다. 이는 부정적인 사용자 경험으로 이어질 뿐더러 롤백을 제대..

클래스 로더 warm up / JIT 컴파일러 warm up

이번 포스팅에선 warm up에 대해서 알아보도록 하겠습니다. 자바에선 JVM의 존재 때문에 항상 느린 언어 취급을 받아야 했습니다 (실제로도 느린건 사실입니다). 하지만 그런 느린 언어라는 누명을 벗기위해 다양한 노력을 시도했습니다. 언어적으로 노력한 부분도 있고 자바를 사용하는 개발자들의 꼼수(?)로 자바는 생각보다 컴파일언어 (C, C++, Rust) 와 견줄만한 속도를 가지게 되었습니다. 우리는 이번 포스팅에선 warm up 이라는 개념이 왜 등장했는지 클래스 로더와 JIT 컴파일러의 관점에서 알아보고, warm up을 어떻게 진행하는지 방법에 대해서 알아보도록 하겠습니다. 클래스 로더 자바에서는 클래스를 읽어오기 위해 클래스 로더를 이용합니다. 클래스 로더는 클래스 파일을 찾고, 메모리에 로드해..

DevOps/CI , CD 2023.07.07

Graceful Shutdown (feat. Hard Shutdown)

여러분들이 배포를 진행하는데 어떤 배포 방법을 사용하는지에 따라 다르겠지만 기존 배포했던 서버를 내려야 하는 상황이 생길 것입니다. 만약 블루그린 배포를 진행했다고 가정하면 새로 올릴 서버를 띄운 다음 기존 서버를 죽여야하는 상황이 생기겠죠? 그 때 그냥 서버를 죽여버리면 사용자는 굉장히 난처한 상황에 놓일 것입니다. 혹시라도 그 사용자가 결제를 진행하고 있다가 서버가 내려가서 결제가 취소된다면 부정적인 사용자 경험으로 이어질 수 있습니다. 하지만 그런 상황이라면 조금 기분 나쁘고 말겠지만 결제가 진행되고 있는 도중 (API에 요청을 보내서 처리하고 있던 도중) 서버가 내려가버리면 이건 예외상황에 의해 트랜잭션이 롤백되는 것이 아니기 때문에 개발자 입장에서도 처리하기 난처한 상황입니다. 그렇기 때문에 G..

DevOps/CI , CD 2023.07.07