목록전체 글 (531)
개발놀이터
Q. 왜 Redis를 사용하셨나요? A. 우선 대안책으로 EHcache와 Memcached가 있었습니다. 같은 글로벌 캐시인 Memcached는 Redis가 제공하는 다양한 자료구조와 장애가 발생해도 데이터를 유지할 수 있는 지속성, 수평적 확장이 용이하다는 특징 때문에 Redis를 선택했습니다. EHcache는 스프링과 통합이 쉽고 속도가 빠르다는 장점이 있어서 많은 고민이 있었지만 멀티 스레드 상황과 분산 시스템 상황에서 캐시 스토리지 동기화에 신경을 써야 해서 앞으로 분산 시스템으로 넘어갈 때 프로젝트의 복잡도를 올리고 싶지 않았습니다.
Q. 왜 JWT를 사용했는가? A. 우선 제 프로젝트의 종점이 MSA였다는 것을 먼저 피력하고 싶습니다. 때문에 격리된 애플리케이션 사이의 통신에서 인증을 위해 stateless한 인증 방식이 필요하다고 생각되었습니다. 기존 인증 방식은 스프링 시큐리티에 온전히 의존해 인증방식이 stateful하기 때문에 MSA와 맞지 않다고 생각했습니다.
Q. 왜 Jenkins를 사용했나요? A. 비교 대상은 Github Action이었고 많은 고민이 있었습니다. 결과적으로 Jenkins를 사용하게 된 이유는 우선 넓은 커뮤니티로 인해 풍부한 레퍼런스가 그 이유였습니다. 처음 CI 자동화를 하는 것이기 때문에 트러블 슈팅이라던가 레퍼런스를 참고할 곳이 많은 곳이 큰 메리트가 있었습니다. 또한 Github Action이 가지고 있는 문제 중 하나인 잡 스케쥴링에 종종 이슈가 있다는 것을 알고 CI 자동화 툴의 치명적인 단점이라고 생각했습니다.
0. Introduce 실제 운영은 모니터링 환경을 구축한다는 것을 알고 있었습니다. 때문에 실제 운영환경을 가정하고 모니터링 환경을 구축해야겠다는 니즈를 느꼈습니다. 이에 프로메테우스, 그라파나, 스프링 Actuator와 같은 기술을 공부하고 제 프로젝트에 적용했습니다. 1. 기존 프로젝트의 모니터링 기존 프로젝트엔 모니터링 기능이 없었습니다. 2. 기존 프로젝트의 문제 기존 프로젝트는 모니터링의 부재로 실제 애플리케이션의 상태를 알 수 없었습니다. 때문에 어떤 부분이 문제이고 어떤 부분을 고려하여 확장해야 하는지 알 수 없었습니다. 3. ver.3 에서 해결한 문제 기존 프로젝트의 문제점에 대해서 인지하고 있었으며 ver.3에서 모니터링 기능을 제공하기로 결정했습니다. 모니터링 문제를 해결함으로써 C..
이번 프로젝트에서 프로메테우스와 그라파나로 모니터링 환경을 구축했는데 어떤 포스팅에서 Spring Actuator를 사용해서 의미있는 모니터링을 하고싶다는 글을 봤습니다. 엑추에이터..? 이게 뭐지? 궁금해서 공부해보고 포스팅하려고 합니다! 그리고 실제로 시각화 툴과 조합해서 이용해보도록 하겠습니다. Spring Actuator? Spring Actuator는 우리의 애플리케이션을 모니터링하고, 메트릭스를 수집하고, 트래픽을 관찰하고, 우리의 데이터베이스의 상태를 모니터링할 수 있는 스프링의 프로젝트 중 하나입니다. 이 라이브러리를 사용하면 실제로 아무것도 구현하지 않아도 프로덕션 레벨의 도구를 사용할 수 있다는 엄청난 장점이 있습니다. Actuator는 주로 구동중인 애플리케이션에 대한 설정 정보들을 ..
https://coding-review.tistory.com/436 Docker로 Prometheus, Grafana 배포하기 실제 환경을 모니터링하는 것은 매우 중요한 것으로 알려져있습니다. 물론 항상 모니터링 하진 않겠지만 중요한 서비스를 배포해야 한다거나 버그를 고치고 난 뒤에 모니터링을 통해 실제 환경 coding-review.tistory.com 이전 포스팅과 이어집니다. 우리는 앞서 프로메테우스, 그라파나, node-exporter까지 준비를 완료했습니다. 이제 그라파나를 어떻게 사용하는지 천천히 알아보도록 하죠. 그라파나 시작하기 그라파나를 처음 시작하면 다음과 같은 화면이 보입니다. 디폴트 계정은 ID : admin PW : admin 이렇게 되어있으니 로그인 하시면 됩니다. 로그인 후 비..
실제 환경을 모니터링하는 것은 매우 중요한 것으로 알려져있습니다. 물론 항상 모니터링 하진 않겠지만 중요한 서비스를 배포해야 한다거나 버그를 고치고 난 뒤에 모니터링을 통해 실제 환경에 잘 녹아들었는지 확인해야합니다. 이번 포스팅에선 실제 배포된 환경을 프로메테우스와 그라파나로 연동하여 CPU 사용량, 메모리 사용량, 디스크 사용량, HTTP 트래픽 등을 모니터링하는 환경을 구축해보도록 하겠습니다. 모니터링 환경 구축 우리가 최종적으로 목표하는 것은 바로 아래와 같은 환경을 구축하는 것입니다. 도커를 이용해 프로메테우스를 띄우고 그라파나도 띄운 다음 모니터링 하는 것이죠. 그리고 이것이 모두 이루어지면 나만의 모니터링 시스템을 만들 수 있습니다. 이렇게 만들기 위해서 먼저 우리는 준비물이 필요합니다. 도..
배포 버전에서 HTTPS 접근이 아닌 HTTP 접근이기 때문에 넘어갈 수 없다는 페이지를 만났습니다. 때문에 다음으로 넘어가야 하는 상황에서 다음으로 넘어가지 못하고 멈추는 상황이 반복되었습니다. 이는 반드시 해결해야 하는 문제였기 때문에 어떤 부분이 문제일까 고민했습니다. 문제에 대해 몇가지 해결책이 떠올랐습니다. HttpServletResponse 객체를 받아와서 sendRedirect로 바꾼다. 로드밸런서의 80포트를 HTTPS로 열어준다. 1번같은 경우는 시도해봤지만 다시 페이지로 리턴해야 하는 상황이었어서 성공하지 못했습니다. 때문에 2번으로 넘어갔습니다. "HTTPS 요청이 와야하는데 HTTP 요청이 왔다는 얘기니까 HTTP 요청을 HTTPS로 바꿔주면 되는거 아냐?" 접근 자체는 좋았지만 이..
회고를 일기에 쓰려고 하려다 회고는 아무래도 시간이 좀 지나고 적는 일기이다 보니 큰 일기(?) 느낌으로 회고 카테고리를 만들었습니다. 첫 회고는 앞만보고 미친듯이 달린 개발 공부 2주년을 기념하여 처음으로 뒤를 돌아봤습니다. 회고를 작성하면서 가장 마음에 들었던 점은 제가 문서화를 잘해놔서 연도와 날짜를 정확하게 알 수 있었다는 점입니다. 연도 별로 어떤 일이 있었는지 큼지막하게 적어보도록 하겠습니다. 2021년 6월 20일 개발 공부를 시작하다. 처음으로 개발공부라는걸 해봤습니다. 2021년 상반기에 했던 프로젝트가 자바 기반 프로젝트였기 때문에 자바를 중점적으로 공부해보고 싶었습니다. 굳이 자바였던 이유는 자바가 취직이 잘된다고 하길래... 첫 공부는 jsp 였는데 그 때 당시 남겨놨던 문서를 보면..
이전 포스팅과 이어집니다. 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가 어떤 지역에 떠있는지에 따라 선택해야 하는것이 다릅니다. (사실 네..