Spring Boot61 네이버 핀포인트란? 연관글 1. 네이버 핀포인트란? 2. 핀포인트 설치하기 네이버 핀포인트를 설치 및 도입하기 전에 APM과 핀포인트에 대해서 알아보겠습니다. APM 목차 APM이란? 애플리케이션 성능이란? APM을 사용하는 다양한 목적 Pinpoint 목차 Pinpoint란? Pinpoint의 특징 Pinpoint의 기능 Pinpoint 아키텍쳐 1.APM이란? Application Performance Management Application Performance Monitoring 애플리케이션의 성능 관리 성능-기계따위가지닌성질이나기능 고객에게 정상적으로 서비스 중인지 관리 메트릭, 이벤트, 로그 및 트랜잭션(MELT)을 모니터링 위와 같이 정의할 수 있는데 단어 그 자체로 우리가 고객에게 제공하는 애플리케이션 성능을.. Spring Boot/모니터링 2023. 4. 1. Transaction 사용법 트랜잭션 전파 @Transcational 어노테이션의 기본 옵션은 REQUIRED이다. public class A { @Transcational public void A() { log.info("A 외부 트랜잭션 시작"); B(); } @Transcational public void B() { log.info("B 내부 트랜잭션 시작"); } } 위와 같은 상황에서 A 메서드에서의 트랜잭션을 외부 트랜잭션 B를 내부 트랜잭션이라 말할 수 있다. 스프링의 경우 외부 트랜잭션과 내부 트랜잭션을 묶어서 하나의 트랜잭션을 만들어준다. 내부 트랜잭션이 외부 트랜잭션에 참여하는것이다. 이것이 기본 옵션은 REQUIRED일때의 트랜잭션 방식이다. 물리 트랜잭션의 실제 DB에서의 트랜잭션이고 논리 트랜잭션은 트랜잭션 .. Spring Boot/Transaction 2023. 1. 24. Logback 커스텀하게 사용하기 이전글들에서 로그백설정으로 로그를 나오게 해봤습니다. 하지만 개발을 하다보면 커스텀하게 1에서는 ~~ 이렇게 로그를 찍고 싶고 2에서는 !!! 이렇게 로그를 찍고 싶은 상황이 있을 것입니다. 그 상황에 맞춰서 로그백을 설정하는 법을 알아보겠습니다. logback-spring-prod.xml ${LOG_DIR}/request1.log ${LOG_DIR}/archive/request1.%d{yyyy-MM-dd}_%i.log 1KB 30 [REQUEST1] ${LOG_PATTERN} true ${LOG_DIR}/request2.log ${LOG_DIR}/archive/request2.%d{yyyy-MM-dd}_%i.log 10KB 30 [REQUEST1] ${LOG_PATTERN} true ${LOG_DIR}.. Spring Boot/Logback 2023. 1. 15. Logback - fileAppender 로그를 남기는게 중요하다는것은 저번글에서 알아보았습니다. 그럼 이제 로컬 환경말고 운영 및 개발 환경에서의 로그를 남기는 법에 대해서 알아보겠습니다. 로컬에서는 인텔리제이로 스프링부트 서버를 시작하게되면 인텔리제이 콘솔에 로그를 확인할수있지만 실제 운영서버를 띄운다면 콘솔을 확인 할 수 없습니다. 그렇기 때문에 파일로 저장해놓은뒤 파일에 적힌 로그들을 확인해야합니다. 이제 파일로 로그를 저장하는 법에 대해서 알아보겠습니다. 프로젝트 구성 logback-variables.properties 로그백 설정에서 사용할 변수들을 정의 해놓은 파일입니다. LOG_DIR=logback/logs LOG_PATTERN=[%-5level] %d{yyyy-MM=dd HH:mm:ss} [%thread] [%logger{40}.. Spring Boot/Logback 2023. 1. 15. Logback 설정하기 Logback 이란? - SLF4J(Simple Logging Facade for Java)라는 인터페이스를 구현하는 구현체이다. ( Simple Logging Facade for Java provides a Java logging API by means of a simple facade pattern. The underlying logging backend is determined at runtime by adding the desired binding to the classpath and may be the standard Sun Java logging package java.util.logging, log4j, reload4j, logback or tinylog. ) - 즉 Logging Frame.. Spring Boot/Logback 2023. 1. 15. Feign Client - Error Decoder 및 logger DemoFeignErrorDecoder public class DemoFeignErrorDecoder implements ErrorDecoder { private final ErrorDecoder errorDecoder = new Default(); @Override public Exception decode(String methodKey, Response response) { HttpStatus httpStatus = HttpStatus.resolve(response.status()); if (httpStatus == HttpStatus.NOT_FOUND) { System.out.println("[DemoFeignErrorDecoder] Http Status = " + httpStatus); throw.. Spring Boot/Feign Client 2023. 1. 15. Feign Client - Interceptor Feign Client의 인터셉터 설정을 해보겠습니다. 인터셉터의 경우 우리가 요청을 보낼 때 한 곳에서 요청에 필요로 하는 공통적인 설정을 할 수 있는 곳이라 생각하시면 됩니다. DemoFeignInterceptor @RequiredArgsConstructor(staticName = "of") public class DemoFeignInterceptor implements RequestInterceptor { @Override public void apply(RequestTemplate template) { //get 요청일 경우 if (template.method() == Request.HttpMethod.GET.name()) { System.out.println("[GET] [DemoFeignInt.. Spring Boot/Feign Client 2023. 1. 15. Feign Client 기본 구성 및 흐름 Feign 이란 ?선언적으로 사용할 수 있는 Clent이다. (= Feign is a declarative web service client. ) ref : https://docs.spring.io/spring-cloud-openfeign/docs/current/reference/html 이 글을 작성하게 된 이유는 백엔드 프로젝트를 하다 보면 외부 API와 통신을 할 일이 생기게 됩니다. 그럴 때 자주 사용하는 것이 HttpURLConnection이나 RestTemplate입니다. 두 개다 사용해봤지만 HttpURLConnection 은 HTTP 한번 호출하기 위해서 많은 코드를 작성해야 생산성이 떨어지는 단점이 있고 RestTemplate는 spring5부터는 Deprecated 되어 있습니다. 그래.. Spring Boot/Feign Client 2023. 1. 14. [Git] Permission denied (publickey). fatal- Could not read from remote repository IntelliJ에서 기존 프로젝트의 코드를 추가하고 늘 하던 대로 Github에 push를 시도하였다. 새로운 기기도 아니고, 어제까지 푸쉬를 했던 상황인데 오류가 나길래 구글링을 얼른 하였다. 에러 내용은 publickey가 permission denied 되어 remote repository로부터 읽을 수 없다는 내용이다.(맞겠지..) 해결방법은 새로운 ssh key를 생성하면 쉽게 해결된다. 해당 프로젝트 경로로 가서 (.git 파일이 있는 경로) git bash here를 하여 Git Bash를 실행해줍니다. ssh-keygen -t rsa -b 4006 -C "본인 깃허브 연동 이메일" 위와 같이 본인이 깃허브의 사용중인 이메일을 입력해줍니다. 그러면 위의 하얀줄 쳐져있는 부분이 출력됩니다. 처.. Spring Boot 2022. 10. 9. Spring WebSocket 클라이언트가 서버와 통신하는 방법 일반적인 클라이언트 - 서버 HTTP 통신은 클라이언트에서 서버로 Request 후 서버에서 클라이언트로 Response 해주고 연결을 끊어 버리는 식으로 통신을 합니다. 그렇다면 만약에 실시간 검색어 같은 기능은 어떻게 구현을 해야 될까요? 실시간 검색어는 주기적으로 업데이트가 되어야 합니다. 웹 소캣을 몰랐을 때는 폴링을 사용하여서 했을 거라 생각했습니다. 폴링 폴링이란 위키백과에서는 폴링(polling)이란 하나의 장치(또는 프로그램)가 충돌 회피 또는 동기화 처리 등을 목적으로 다른 장치(또는 프로그램)의 상태를 주기적으로 검사하여 일정한 조건을 만족할 때 송수신 등의 자료처리를 하는 방식을 말한다. 이 방식은 버스, 멀티포인트 형태와 같이 여러 개의 장치가 동일.. Spring Boot 2022. 9. 9. [Spring] DTO는 왜 써야 하나요? 1. 글 작성 이유 DTO(Data Transfer Object)란 계층간 데이터 교환을 위해 사용하는 객체(Java Beans)입니다. 어느순간부터 DTO를 사용하게 되면서 이것을 왜? 사용하는가에 대해 갑자기 생각이들었습니다. 아래 코드를 보면서 DTO는 왜 필요한가에 대해 생각해보겠습니다. * 아래 코드들은 글 작성을 위한 실제 설계의 일부입니다. Entity @Getter @Entity @NoArgsConstructor(access = AccessLevel.PROTECTED) public class GroupTab { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String groupName; pr.. Spring Boot 2022. 8. 18. [Spring Security] @AuthenticationPrincipal 어노테이션 사용하기 https://techjisu.tistory.com/97 저번글과 이어지는 내용입니다. 일반로그인 테스트까지는 성공하였는데 뷰에서 OAuth2로그인을 하여서 모임을 만들려고 하니 PrincipalDetails를 member로 캐스트 할수없다는 에러가나면서안되었습니다. 이제 진짜 어떻게 해야되나..하... 그래서 security를 처음부터 공부하자는 마음으로 전체코드를 처음부터 다시 쭉 보고 있었는데 저번글의 마지막에 썼던내용이 생각났습니다. 스프링 시큐리티는 SecurityContext에 인증된 Authentication 객체를 넣어두고 현재 스레드 내에서 공유되도록 관리하고 있는데요. 그래서 스프링 시큐리티가 가지고 있는 UsernamePasswordAuthenticationToken을 이용하여 어댑터.. Spring Boot/Spring Security 2022. 8. 17. 이전 1 2 3 4 5 6 다음