2019/04/06

    Prometheus 를 알아보자

    개요 Prometheus 는 오픈소스 모니터링 솔루션이다. (https://prometheus.io/) 크게 Prometheus 서버와, 메트릭 정보를 export할 export node로 구성이 되어 있다 구조가 좀 일반적인 모니터링 시스템과는 다르다는걸 느낄수가 있는데, 원래는 대부분의 솔루션이 메트릭을 수집할 때 메트릭이 발생한 서버에서 중앙 서버로 데이터를 전송해주는 구조로(push) 되어 있지만, 프로메테우스 같은 경우는 신기하게도 중앙서버(prometheus server)에서 메트릭을 polling 해서 가져가도록 구성이 되어 있다. 장점 이 솔루션을 쓰게 되면 얻을 수 있는 장점은, 아무래도 pull 방식의 구조를 채택함으로써 모든 메트릭에 대한 데이터를 중앙 서버로 보내지 않아도 된다는 점..

    Spring Password Encoder

    Spring에서는 인증/권한인가 등의 처리가 필요할 때 사용하라고 만든 Spring Security 패키지가 존재한다. 그 중 유저가 입력하는 Password를 암호화해서 저장하는 방법에 대해서 알아보자 아, 그 전에 패스워드를 저장할 때 사용하는 알고리즘을 먼저 봐야 하는데 일단 패스워드는 무조건 단방향 암호화/해싱을 사용해야 한다. 한번 encode된 패스워드는 다시 복호화를 할 수 없도록 해야 하고(AES,RSA,DES… 등의 양방향 암호화를 사용하면 안된다는 뜻이다) 이를 비교하는 로직만 같은지 아닌지만 판단할 수 있게 만들어야 한다. 이를 지키지 않을 경우 최악은 DB에 저장된 유저의 패스워드가 다 복호화 되어 개인정보가 털리던.. 혹은 결제와 관련된 경우 직접적인 타격을 받게될 수도 있다. 혹..

    Dispatcher Servlet

    DispatcherServlet Javadoc 원문 설명 DispatcherServlet은 Spring의 모든 HTTP Call을 클라이언트(browser, http client …) 받아서 View 혹은 데이터를 내려주는 역할을 한다. 그리고 Handler를 등록해서 편리하게 url 매핑을 하거나, Exception Handling을 하는 것을 지원한다. Spring에서 제공하는 servlet은 유연한 interface를 가지고 있고, 적절한 adapter class를 사용해서 이를 handling할 수 있으며, MVC Framework의 기본적인 기능을 제공한다. MVC Pattern을 먼저 알아봐야 할 것 같은데, 이 아키텍쳐가 기본적인 MVC Pattern이며, 아래의 구성요소를 가지고 있다 Co..

    HTTP에 관해서

    HTTP HTTP 는 HyperText Transfer Protocol 의 약자로, 오늘날의 인터넷에서 주로 사용하는 데이터를 송/수신하기 위한 프로토콜이다. 최초의 HTTP를 이용한 데이터 송수신은GET 방식의 HTML 을 위주로 이루어졌으나(문서를 표현하기 위해서) 이는 추후에 여러 메소드 및 미디어 타입이 추가됨에 따라 확장을 했다. HTTP는 프로토콜이기 때문에 최초 버전에서부터 현재까지의 유의미한 버전이 존재한다. 근데 놀랍게도 대부분의 프로토콜이 큰 변화를 겪는 반면에, HTTP의 경우는 버저닝이 많지가 않아서 크게 세 가지 정도로 히스토리를 정리할 수 있다. HTTP 1.0 HTTP 1.1 HTTP 2.0 HTTP/1.0 HTTP는 원래 0.9v 부터 시작되었다고 하지만, 사실상 1.0버전이..

    Spring Boot Prometheus Converter 406 Not Acceptable

    개요 Spring Boot Project에 actuator를 적용한 뒤, prometheus micrometer를 적용했을 때 WebMvcConfigurationSupport 를 customizing 하게 되면 발생하는 문제에 대한 해결책이다. 해당 문제를 보려면 일단 Spring Boot Project를 생성하자. (Spring boot Initializer를 사용하면 편리하다) 그 뒤, 아래의 dependency를 추가한다. org.springframework.boot spring-boot-starter-actuator io.micrometer micrometer-registry-prometheus application.properties에 아래 내용을 추가한다(추가하지 않으면 /actuator/pr..