본문 바로가기

Java190

Stream<String>에서 String으로 변환하기 중복된 문자 제거 문제 풀이 https://school.programmers.co.kr/learn/courses/30/lessons/120888 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr Q) 문자열 my_string이 매개변수로 주어집니다. my_string에서 중복된 문자를 제거하고 하나의 문자만 남긴 문자열을 return하도록 solution 함수를 완성해주세요. import java.util.*; import java.util.regex.Pattern; import java.util.stream.*; class Solution { public .. 2023. 10. 4.
실무에서 모니터링 사용하기 모니터링 관찰 시 전체-> 점점 좁게 모니터링 3단계 1.애플리케이션 추적(하나만 쓴다면 핀포인트를....) 각각의 HTTP 요청을 추적. 장애 생겼을 때 찾기 쉬움.... 요청 쿼리까지 다 나옴! https://github.com/pinpoint-apm/pinpoint GitHub - pinpoint-apm/pinpoint: APM, (Application Performance Management) tool for large-scale distributed systems. APM, (Application Performance Management) tool for large-scale distributed systems. - GitHub - pinpoint-apm/pinpoint: APM, (Applic.. 2023. 9. 27.
비즈니스 메트릭(모니터링) 주문수, 취소수 등 비즈니스에 특화된 부분을 모니터링 할 수 있도록 비즈니스 메트릭을 이용해보자. 마이크로미터를 사용해서 메트릭을 직접 등록할 수 있다. * 마이크로미터 핵심기능 : Counter, Gauge, Timer, Tag 참고: Tag를 사용하면 데이터를 나누어서 확인할 수 있다.(ex. 성별, 주문상태 등등...) @Counted 어노테이션을 이용해서 쉽게 등록할 수 있다.(이미 마이크로미터에서 구성요소를 등록해두었음) @Counted("my.order") @Override public void cancel() { log.info("취소"); stock.incrementAndGet(); } @Counted("메트릭이름") tag 에 method 를 기준으로 분류해서 적용한다 이때, config.. 2023. 9. 27.
프로메테우스, 그라파나 : 모니터링 도구 메트릭은 실시간 서버의 대략적인 값과 추세를 확인할 때 사용한다. 문제파악! 프로메테우스 : 메트릭을 수집하고 보관하는 DB역할 그라파나 : 메트릭을 보기 편하게 만들어주는 대시보드 프로테메우스 실행파일 실행 후 http://localhost:9090/ 접속 레이블 일치 연산자 = 제공된 문자열과 정확히 동일한 레이블 선택 != 제공된 문자열과 같지 않은 레이블 선택 =~ 제공된 문자열과 정규식 일치하는 레이블 선택 !~ 제공된 문자열과 정규식 일치하지 않는 레이블 선택 프로메테우스 범위벡터 활용 프로메테우스의 메트릭은 게이지/카운터로 나뉜다. increase() 를 사용하면 카운터 메트릭을 게이지처럼 그래프를 확인할 수 있다.지정한 시간 단위별로 증가를 확인할 수 있다. 마지막에 [시간] 을 사용해서 .. 2023. 9. 24.
프로덕션 준비 기능 - Actuator Spring Boot Actuator 라이브러리 활용 엔드포인트 활성화 + 노출 필 2023. 9. 23.
@Profile(각 환경별로 등록할 스프링 빈 분리) @Profile 을 사용하면 각 환경 별로 외부 설정 값을 분리하는 것을 넘어서, 등록되는 스프링 빈도 분리할 수 있다 만약에 프로필에 따라 빈 등록이 변경되어야 한다면? 예를 들어서 기능을 붙여야 하는데, 로컬 개발 환경에서는 실제 결제가 발생하면 문제가 되니 가짜 결제 기능이 있는 스프링 빈을 등록하고, 운영 환경에서는 실제 결제 기능을 제공하는 스프링 빈을 등록한다고 가정해보자 config 파일에서 @Profile 사용 @Slf4j @Configuration public class PayConfig { @Bean @Profile("default") public LocalPayClient localPayClient(){ log.info("LocalPayClient 빈 등록"); return new L.. 2023. 9. 23.