1. 개요예전에 프로메테우스, 그라파나를 도커로 띄워 스프링 부트 모니터링 환경을 구축했었다. 하지만 모니터링을 매번 눈으로만 하기는 힘들다. 그라파나에선 쿼리를 통해 slack, email 등 여러 서비스로 알림을 보내줄 수 있다. 사실 처음 모니터링 환경을 구축했을 때도 slack으로 알림을 보내도록 하고싶었는데, PromQL 다루는데 미숙해서 실패했었다. 이번에 깔끔하게 정리해서 기록해두려 한다. 2. Slack 설정먼저 알람 메시지를 Slack으로 전달받기 위해 Slack의 Web Hook 을 생성해야 한다. Slack App 생성하기 Slack API 홈페이지에 접속한 후 로그인 해준다. 로그인이 완료되었다면, Create New App 버튼을 클릭해 Slack App을 생성해..
1. 개요현재 진행중인 창업 프로젝트의 기능 개발이 대부분 끝나고, 사업자가 나와야 할 수 있는 SMS, 알림톡 부분과 뱅킹 기능만이 남았다. 지난 5개월간 정신없이 기능 개발에 집중하다보니 미흡한 부분이 꽤나 보였고 최근엔 하나하나 리펙터링 과정을 밟고있다. 꼼꼼히 지난 코드를 살피던 중 동시성 문제가 발생할 만한 로직이 발견됐고 이를 해결하고자 Thread-Safe, 동시성 문제에 대해 공부하게 됐다. 아래 게시글에서 공부했던 내용들을 정리해뒀다. https://dgjinsu.tistory.com/53 멀티 쓰레드 사용 시 꼭 알아야 할 내용 - Thread-Safe멀티 쓰레드는 프로그램의 성능을 향상시키는 가장 확실한 방법이다. 하지만 여러 쓰레드가 자원을 공유한다면 예기치 않은 문제를 발생시..
1. Thread 스레드의 개념은 다음과 같다. 실행중인 한 프로그램(프로세스) 내에서 구분지어진 실행 단위 하나의 프로세스에서 작업을 처리하기 위한 단위로 생각하면 된다. 실생활 예를 들면, 은행은 은행이라는 프로세스 내에서 여러 고객의 동시 거래 요청 작업을 처리해야한다. 이때 은행이 병렬적으로 동시 거래 요청 작업을 처리하는데, 해당 작업이 이루어지는 단위가 스레드인 것이다. 컴퓨터의 CPU는 스레드 단위로 작업을 처리한다. CPU는 여러 스레드를 번갈아가며 실행해서 다중 작업을 처리한다. CPU를 엄청 짧은 시간으로 시분할해서 사용하기 때문에 우리 눈에는 동시에 처리되는 것처럼 보이지만, 사실은 여러 스레드를 번갈아가면서 작업을 실행하는 것이다. ❓ Thread가 많으면 많을수록 좋을까? 1. T..
멀티 쓰레드는 프로그램의 성능을 향상시키는 가장 확실한 방법이다. 하지만 여러 쓰레드가 자원을 공유한다면 예기치 않은 문제를 발생시킬 수 있다. Java에선 어떻게 Thread-Safe하게 개발할 수 있도록 지원을 하는지, 다양한 방법들에 대해 간단한 코드와 함께 알아보고 실제 개발 중이던 Thread-UnSafe한 코드를 수정해볼 것이다. 1. Thread Safe (쓰레드 세이프) 란? 멀티 쓰레드 프로그래밍에서, 어떤 공유 자원에 여러 쓰레드가 동시에 접근해도, 프로그램 실행에 문제가 없는 상태를 의미한다. Race Condition 상황이 발생해도 실행에 문제가 생기지 않는 것을 의미한다. Race Condition 이란? 경쟁 상태로, 공유 자원에 대해 두 개 이상의 스레드가 동시에 읽거나 쓰는..
🤔 1. 고민.. 현재 나는 창업 프로젝트에서 혼자 백엔드 개발을 맡아 진행하고 있다. 대학생이니 당연히 사수도 없고, 같이 고민하고 토론할 백엔드 팀원도 없으니 내가 결정한 모든 것이 그대로 프로젝트에 반영되었다. 나의 잘못된 판단, 습관 들로 프로젝트가 망가지지 않도록 하기 위해 끊임없이 되돌아보고 조언을 구하며 진행하고 있다. 현재 프로젝트는 큰 틀로 domain, global 를 나눴고, 도메인 별로 entity, dto등 생성하고 있었다. 하지만 프로젝트 규모가 커짐에 따라 dto관리를 하기가 너무 힘들었다. 당장 몇 주 전에 개발했던 코드를 딱 봤을 때 무슨 역할을 하는 클래스인지 바로 알아차리기 힘들었다. 나름 코드에 신경을 많이 써서 개발 하는 스타일인데 규모가 커지니 어지러웠다. 아래는 ..