본문 바로가기
  • A space that records me :)

기술20

[Spring security] Authentication 라이브러리 구현 보통 웹 서비스에서는 로그인과 권한인증 등의 기능은 필수이며 구현해야하는 기본중의 기본적인 서비스이다. 물론 내부에서만 사용하는 서비스인 경우 필요 없는 기능인 경우가 존재하지만, 대부분 시스템에서 필요한 기능이며, 개발을 할 때마다 새로 구현하고,, 여기저기서 구현했던 로직을 짜집기하고,, 이런 방식으로 진행해 왔다. 각 프로젝트마다 같은 기능을 구현하는 것인 데 이것을 사내 모듈로 만들어 사용하면 조금 더 개발시간을 단축하고, 파생되는 버그를 줄일 수 있지 않을까?라는 의견이 나와 사내 Authentication 라이브러리를 내가 직접 구현하게 되었다. Authentication 라이브러리는 인증 및 권한 관련 기능을 제공하며, 각 프로젝트마다 원하는 기능을 세팅할 수 있도록 구현했다. 사내 라이브러.. 2021. 10. 23.
프로메테우스(Prometheus) Exporter - 모니터링 에이전트 .Net Framework에서 내가 원하는 메트릭을 커스텀할 수 있는 에이전트가 존재하는지 알아보면서 알게된 Exporter들을 정리하였다. 결국 이 모니터링 에이전트들도 개인이 개발한 오폰 에이전트였다. 다양한 언어로 만들어 져 있던데.. 나도 만들어 볼까..? Exporter 란? 프로메테우스의 Exporter는 실제로 메트릭 정보를 수집하는 모니터링 에이전트로, 대상 시스템에서 메트릭을 수집하고 HTTP 엔드포인트(default : /metrics)에 노출시키 고 소프트웨어(에이전트)이다. exporter는 open source로 공개된 것도 있고, 직접 custom해서 구현할 수 도 있다. 대표적인 Exporter 종류 node-exporter mysql-exporter wmi-exporter (.. 2021. 7. 17.
프로메테우스(Prometheus) 설치 및 사용 설치 환경 linux (MacOs) docker 1. Configuration 파일 작성 파일명은 prometheus.yml 이다. $ vi {path}/prometheus.yml 작성 예시는 아래와 같다. Prometheus에서 제공하는 기본 샘플이다. # my global config global: scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute. evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute. # scrape_timeout is set to the global defa.. 2021. 7. 17.
프로메테우스(Prometheus) Configuration 프로메테우스의 설정이 정말 너무 많다. 나에게 필요한 설정이 뭐뭐 있을 까 찾아보다가 정말 많아서 정리해두었다. 역시.. 내가 어떤 툴을 사용하려면, 그 툴에서 제공하는 설정을 제대로 알아야 정확히 그 툴의 특성을 이용하여 올바른 효과를 얻을 수 있는 것 같다. Configuration 파일 구성 Main configuration key type default 설명 global.scrape_interval 정규식 1m 타겟 시스템으로 부터 메트릭을 수집하는 주기 How frequently to scrape targets by default. global.scrape_timeout 정규식 10s 타겟 시스템으로 부터 request time out 대기 시간 How long until a scrape req.. 2021. 7. 17.
프로메테우스(prometheus) 란? 지금 유지보수 중인 시스템 중에서 .Net Framework로 개발한 것이 있는데, 이 시스템이 가끔 불안정한 모습을 보였다. 시스템에 특정 문제가 발생하면 나를 포함은 유지보수 담당자에게 SMS로 전송되고, 그 문자를 받은 사람은 바로 접속하여 확인을 하는 방식으로 진행하고 있었다. 그러나 우리는 SMS로 문자를 받는 것 보다 더 빠르게 실시간으로 확인을 하고 싶었고 특정 문제 뿐만 아니라 CPU 점율과 시스템이 받고 있는 실시간 패킷정보 등을 알고 싶었다. 팀장님께서 내게 프로메테우스 라는 것이 있고 이것을 통해 시스템 메트릭을 수집할 수 있는 것 같으니 프로메테우스가 정확인 어떤 아이이며 어떻게 동작하는 것인지, 우리가 원하는 메트릭 정보를 커스텀하여 수집 할 수 있는 것인지 알아보라고 하셨다. 새.. 2021. 7. 16.
[Spring] Spring Security란? 2021.05 사내 프레임워크 중 로그인/권한인증 모듈 개발시 사용하였다. 구현 기능 : 로그인, 회원가입, 권한인증 및 관리(method, api), 비밀번호 실패, 회원정보 수정 Spring Security를 사용하여 권한인증 모듈을 개발하게 되었는데, 처음에 Spring Security가 무엇인지 어떻게 동작하는지, 또 어떤 기능들을 제공하는지에 대하여 제대로 알지 못하는 상태에서 급하게 구현을 하였다.. 그 결과,, 중간 점검시 팀장님께서 왜 servlet filter를 사용하여 구현하였나요? 라는 질문에 나는 아무것도 대답하지 못하였다.. 팀장님께서 알려주셨다. 최소한 내가 사용한는 툴, 라이브러리에 대해서는 정확하게 알고 가야한다고. 그래야 그 툴을 올바르게 사용할 수 있다고. 맞는 말씀을 해.. 2021. 7. 11.
[JAVA] jar 파일 CMD로 실행시 한글 깨짐 현상 cmd로 jar실행 후 알 수 없는 null포인터 에러 발생. key로 value를 가져오는 로직에서 발생 but) spring boot로 실행하면 에러가 안남. 분석해보아도 에러 발생할 이유가 전혀 없음. 여기서 key값이 한글로 되어 있었다. 그래서 한글 깨짐 예상해봄. cmd창으로 돌릴 때 한글 인코딩을 해주기 위해서 jar실행 시 아래의 옵션을 추가해줘야 한다. -Dfile.encoding=UTF-8 java -jar -Dfile.encoding=UTF-8 [jar파일] 2021. 4. 2.
[Spring Boot] RabbitMQ 사용 RabbitMQ란 ? 2020/11/19 - [IT story] - [RabbitMQ] RabbitMQ란? [RabbitMQ] RabbitMQ란? 2020 KT CPN 시스템 FM 서버 간에 노티 처리를 위해 사용 대표적으로 한 서버에서 캐시가 변동되면, 다른 서버에도 동일한 작업을 하도록 하기 위함이다. RabbitMQ 계념 RabbitMQ란? AMQP 프로토콜을 구현 yjkim97.tistory.com 이번 포스트에서는 RabbitMQ를 이용하여 물려있는 서버에게 노티를 보내주는 로직을 구현해 보았다. RabbitMQ 서버는 이미 구현되어 있다고 가장한다. config.properties.xml spring.rabbitmq.host= #host spring.rabbitmq.port= #port spr.. 2021. 1. 6.
[Spring] EhCache 사용 EhCache : Spring 로컬 캐시 라이브러리 Spring에서 간단히 사용할 수 있는 JAVA기반 오픈소스 캐시 라이브러리이다. 환경 Spring Tool Suite 3 ehcache 3 application.yml 사용 이유 index 키 값을 가지고 간단한 정보(자주 변동되지 않는 정보)를 알기 위한 DB접근을 줄이기 위해 -> 부담이 생김 또는 위와 같은 이유로 쿼리에서 매우 빈번히 발생하는 join을 줄이기 위해. EhCahe 설정 1. Maven depandency 1) Maven dependency 추가 (pom.xml) net.sf.ehcache ehcache 2) spring boot를 사용시 아래의 Maven dependency 추가 (pom.xml) org.springframewo.. 2020. 11. 19.