Dev 226

[JPA] JPA 동작원리 ( 영속성 컨텍스트 )

[JPA] 패러다임의 불일치 어플리케이션 개발은 주로 객체지향언어로 이루어진다. 객체지향언어는 현실의 많은 문제를 코드로 구현하지만 문제가 있다. 데이터는 주로 관계형DB에 저장되는데 관계형DB와 어플리케이션은 lordofkangs.tistory.com JPA는 객체지향 프로그래밍과 SQL 중심 프로그래밍 사이의 '패러다임 불일치' 문제를 해결하기 위해 등장했다. 이전에는 개발자가 SQL문을 직접 작성하여 테이블에 레코드를 추가해야 했다. JPA가 등장한 이후, 개발자는 JPA가 관리하는 인스턴스(엔티티)를 생성, 수정, 삭제만 하면 된다. ( 객체지향 관점 유지 가능 ) 그러면 JPA가 자동으로 SQL문을 생성한다. JPA는 DB 테이블의 레코드를 엔티티 인스턴스와 동기화하여 관리한다. 1차 캐시 영역..

Dev/JPA 2023.05.22

[JPA] 패러다임 불일치

어플리케이션 개발은 주로 객체지향언어로 이루어진다. 객체지향언어는 현실의 많은 문제를 코드로 구현 가능하게 하지만 문제가 있다. 데이터는 주로 관계형DB에 저장되는데 관계형DB와 어플리케이션은 패러다임이 다르다. 객체지향언어는 객체를 생성하고 객체간 관계를 맺는다. 반면 관계형DB는 테이블간 외래키로 관계를 맺는다. 객체와 테이블의 개념이 달라, 두 환경의 패러다임 자체가 서로 다르다. 그러므로 중간에 변환과정이 필요하다. JDBC의 등장 Application이 DB에 읽기/쓰기를 하려면 두 환경을 연결할 모듈이 필요하다. 그래서 JAVA언어로 읽기/쓰기를 구현하는 라이브러리가 등장하는데, 그것이 JDBC(Java Database Connectivity)이다. 이후에는 iBatis, MyBatis같은 O..

Dev/JPA 2023.05.18

[SpringBoot] 커스텀 메트릭(Metric) 등록하기 -Timer

[SpringBoot] 커스텀 메트릭(Metric) 등록하기 [SpringBoot] 메트릭(Metric) 이란? [SpringBoot] 모니터링 - 엑츄에이터(Actuator)(1) 개발이 완료되면 App을 모니터링해야 한다. ( Production-Ready ) App상태정보, 트래픽, DB상태정보 등등 다양한 모니터링 데이터 lordofkangs.tistory.com 이전 포스팅에서 예제프로그램을 만들어 보았다. 여기에 타이머(Timer) 개념을 추가해보겠다. 1) 카운터 ( Counter ) 시간에 따라 '증가'만하는 데이터이다. 주문수는 항상 증가한다. 중간에 감소하지 않는다. 2) 게이지 ( Gauage ) 시간에 따라 '증가'와 '감소'를 반복하는 데이터이다. 재고량은 쌓였다가 줄었다가 반복한..

Dev/SPRING 2023.05.18

[SpringBoot] 커스텀 메트릭(Metric) 등록하기 - 카운터(Counter)

[SpringBoot] 커스텀 메트릭(Metric) 등록하기 [SpringBoot] 메트릭(Metric) 이란? [SpringBoot] 모니터링 - 엑츄에이터(Actuator)(1) 개발이 완료되면 App을 모니터링해야 한다. ( Production-Ready ) App상태정보, 트래픽, DB상태정보 등등 다양한 모니터링 데이터 lordofkangs.tistory.com 이전 포스팅에서 커스텀 메트릭 등록을 위한 간단한 예제프로그램을 만들어 보았다. 이번 포스팅에서는 예제 프로그램을 활용하여 커스텀 메트릭을 만들어 보겠다. 1) 카운터 ( Counter ) 시간에 따라 '증가'만하는 데이터이다. 주문수는 항상 증가한다. 중간에 감소하지 않는다. 2) 게이지 ( Gauage ) 시간에 따라 '증가'와 '감..

Dev/SPRING 2023.05.16

[SpringBoot] 커스텀 메트릭(Metric) 등록하기 - 예제 만들기

[SpringBoot] 메트릭(Metric) 이란? [SpringBoot] 모니터링 - 엑츄에이터(Actuator)(1) 개발이 완료되면 App을 모니터링해야 한다. ( Production-Ready ) App상태정보, 트래픽, DB상태정보 등등 다양한 모니터링 데이터를 파악해야 하는데 개발자가 lordofkangs.tistory.com [Prometheus] 프로메테우스 연동하기 ( With SpringBoot ) 프로메테우스(Prometheus)란? Application을 모니터링하려면 다양한 데이터를 수집해야 한다. 시간이 지남에 따라 추이가 변하는 데이터를 메트릭(Metric)이라고 하는데, CPU사용량, 메모리 사용량 등이 lordofkangs.tistory.com [Grafana] 그라파나 연..

Dev/SPRING 2023.05.15

[SpringBoot] 메트릭(Metric) 이란?

[SpringBoot] 모니터링 - 엑츄에이터(Actuator)(1) 개발이 완료되면 App을 모니터링해야 한다. ( Production-Ready ) App상태정보, 트래픽, DB상태정보 등등 다양한 모니터링 데이터를 파악해야 하는데 개발자가 하나 하나 파악하기에 어려움이 있다. Sprin lordofkangs.tistory.com 메트릭(Metric)이란? 시간이 지남에 따라 변화하는 데이터를 의미한다. 메모리 사용률, CPU 사용률, 스레드 사용률 등등.. 시간에 따른 추이를 추적할 가치가 있는 데이터를 메트릭(Metric)이라 부른다. 메트릭 수집은 마이크로미터(MicroMeter) 모듈이 담당하는데, 이는 엑츄에이터 안에 내장되어 있다. 마이크로미터는 일정한 시간간격으로 메트릭을 수집한다. 수집..

Dev/SPRING 2023.05.11

[SpringBoot] 엑츄에이터(Actuator)(3) - 로그 및 HTTP 기록 확인하기

[SpringBoot] 모니터링 - 엑츄에이터(Actuator)(1) 개발이 완료되면 App을 모니터링해야 한다. ( Production-Ready ) App상태정보, 트래픽, DB상태정보 등등 다양한 모니터링 데이터를 파악해야 하는데 개발자가 하나 하나 파악하기에 어려움이 있다. Sprin lordofkangs.tistory.com 이전 포스팅에서 Actuator에 대해서 알아보았다. 이번 포스팅에서는 Actuator를 활용하여 실시간으로 로그레벨을 수정해보고 HTTP 요청/응답 기록을 확인해보겠다. 실시간 로그레벨 수정하기 logger 엔드포인트는 Spring에 등록된 클래스의 로그레벨을 노출한다. 로그레벨은 중요하다. 프로그램을 운영하다가 에러가 발생하면 로그를 보는데 로그수준에 맞는 로그만 확인 ..

Dev/SPRING 2023.05.11

[SpringBoot] 엑츄에이터(Actuator)(2) - info 엔드포인트

[SpringBoot] 모니터링 - 엑츄에이터(Actuator)(1) 개발이 완료되면 App을 모니터링해야 한다. ( Production-Ready ) App상태정보, 트래픽, DB상태정보 등등 다양한 모니터링 데이터를 파악해야 하는데 개발자가 하나 하나 파악하기에 어려움이 있다. Sprin lordofkangs.tistory.com 이전 포스팅에서 엑츄에이터(Actuator)가 무엇인지 알아보았다. 이번 포스팅에서는 엑츄에이터가 제공하는 다양한 엔드포인트에 대해서 정리해보겠다. ( 엑츄에이터 설정은 이전 포스팅을 참고하기 바랍니다. ) info 정보 info 엔드포인트는 실행된 SpringBootApplication의 데이터를 담고 있다. 보안상의 이유로, 몇몇 엔드포인트는 설정없이는 공개가 되지 않도..

Dev/SPRING 2023.05.11

[SpringBoot] 엑츄에이터(Actuator)(1) - Actuator란?

개발이 완료되면 App을 모니터링해야 한다. ( Production-Ready ) App상태정보, 트래픽, DB상태정보 등등 다양한 모니터링 데이터가 존재한다. 그러나 개발자가 이를 하나 하나 파악하기에 어려움이 있다. SpringBoot는 다양한 모니터링 데이터를 한가지 동일한 방식으로 제공하는 라이브러리를 갖고 있는데, 그것이 엑츄에이터(Actuator)이다. Actuator는 HTTP방식과 JMX방식으로 데이터를 제공한다. 이번 포스팅에서는 HTTP방식에 대해서 알아보겠다. 엑츄에이터 라이브러리를 Dependecy로 등록하면 Spring은 엑츄에이터 관련 Bean을 스프링 컨테이너에 추가한다. 그럼, 클라이언트는 URL로 원하는 모니터링 데이터를 가져올 수 있다. ▶︎ URL 형식 : http://..

Dev/SPRING 2023.05.11

[SpringBoot] 외부설정 가져오기(3) - @ConfigurationProperties

[SpringBoot] 외부설정 가져오기(2) - @Value[SpringBoot] 외부설정 통합 - Enviroment Application은 외부에서 설정을 가져올 수 있다. 외부설정을 가져 오는 방법은 다양한데, SpringBoot는 최대한 통합하고 추상화하여, 외부설정을 간단히 조작할 수 lordofkangs.tistory.com @Value 어노테이션은 설정값을 변수에 직접 넣는다. @Value에는 두 가지 제한점이 있다. 1) 변수마다 @Value를 선언해야한다. 설정이 필요한 모든 변수에 @Value를 선언하니 번거롭다. 2) @Value는 변수에 값을 주입하다보니 보안 및 가공이 어렵다. 외부설정을 데이터객체에 바로 주입하면 잘못된 데이터가 바인딩될 수 있다. 중간과정을 두어 유효성 검사를..

Dev/SPRING 2023.05.07