SPRING 74

[SpringMVC] 요청(Request)의 종류 ( GET, POST, JSON )

[SpringMVC] 웹서비스에서 Request(요청)가 처리되는 원리 ( + Servlet ) JAVA Runtime Enviroment(JRE)는 하나의 프로세스, 다수의 스레드 환경이다. JVM은 하나의 프로세스로 동작하고 다수의 스레드로 병렬처리를 지원한다. 이런 환경은 Web Service에 매우 적합하다. 프로세스A lordofkangs.tistory.com 지난 포스팅에서 웹서비스에서 요청(Request)이 처리되는 원리에 대해서 다루어 보았다. 이번 포스팅에서는 요청은 어떤 형태로 들어오는지를 알아보겠다. 웹서비스에 요청은 여러 형태로 들어오지만 4가지를 기본으로 알고 있으면 된다. 1) GET 방식 2) POST 방식 3) JSON 방식 4) Message Body방식 HTTP는 대략 H..

SPRING/Spring MVC 2023.08.02

[SpringMVC] 웹서비스에서 요청(Request)이 처리되는 원리 ( + Servlet )

JAVA Runtime Enviroment(JRE)는 하나의 프로세스, 다수의 스레드 환경이다. JVM은 하나의 프로세스로 동작하고 다수의 스레드로 병렬처리를 지원한다. 이런 환경은 Web Service에 매우 적합하다. 프로세스A가 CPU를 점유하고 있다. CPU가 프로세스A를 프로세스B로 바꾸려고 한다. 이를 컨텍스트 스위칭(Context Switching)이라 부른다. 컨텍스트 스위칭은 오버헤드를 발생시킨다. 컨텍스트 스위칭 작업을 담당하는 디스패처 프로그램이 동작해야 하고 이는 커널수준의 작업이기에 그렇다. 또한 메모리도 서로 독립적이기에, 프로세스가 늘어날수록 메모리 낭비도 심해진다. 초기 동적인 웹페이지 구현 시, Request를 하나의 프로세스에 할당했다. 대표적으로 CGI(Common Ga..

SPRING/Spring MVC 2023.08.01

[Spring] 필드주입방식이 권고되지 않는 이유

https://lordofkangs.tistory.com/406 [Spring] 의존성 주입이란? ( Dependency Injection ) Spring의 핵심개념은 의존성 주입(DI)이다. 의존이란,A의 기능이 동작하려면 객체B가 존재해야 함을 의미한다. 예를들어, Controller는 웹화면을 구성하는 역할을 한다. 화면을 구성하려면 서비스에 lordofkangs.tistory.com 지난 포스팅에서 의존성 주입에 대해서 알아보았다. 의존성 주입(DI)은 세가지 방식으로 이루어진다. 1) 생성자 주입방식 ( final ) 2) 필드 주입방식 ( @Autowired ) 3) 수정자 주입방식 ( Setter ) 세가지 방식 중 '필드주입방식'은 권고되지 않는다. 권고되지 않는 이유를 생성자,수정자 주입..

SPRING/Spring Basic 2023.06.23

[Spring] 의존성 주입이란? ( Dependency Injection )

Spring의 핵심개념은 의존성 주입(DI)이다. 의존이란,A의 기능이 동작하려면 객체B가 존재해야 함을 의미한다. 예를들어, Controller는 웹화면을 구성하는 역할을 한다. 화면을 구성하려면 서비스에 맞는 데이터를 전달 받아야 한다. 그러므로 Controller는 데이터를 서비스에 맞게 처리하는 로직을 가지고 있는 Service에 의존한다. Service는 데이터가 필요하므로 데이터를 가져오는 기능을 갖는 Repository에 의존한다. 이처럼, 객체지향구조는 서로 '의존'하고 있는 구조이다. 그러나 의존을 주입하는 코드를 개발자가 직접 구현하면 객체를 직접 관리해야 하고 객체간 결합도가 증가시킬 수 있다. Spring 프레임워크 존재 이유는 여기에 있다. Spring은 컨테이너라는 공간이 있다...

SPRING/Spring Basic 2023.06.20

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

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

SPRING/Spring Boot 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 ) 시간에 따라 '증가'와 '감..

SPRING/Spring Boot 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] 그라파나 연..

SPRING/Spring Boot 2023.05.15

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

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

SPRING/Spring Boot 2023.05.11

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

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

SPRING/Spring Boot 2023.05.11

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

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

SPRING/Spring Boot 2023.05.11