728x90

백엔드/Spring 53

[Spring] Thread Pool & ThreadLocal

Thread Pool여러 개의 쓰레드를 미리 생성해 두고 작업이 필요할 때 생성된 쓰레드 중 하나를 재사용하여 작업을 수행하는 패턴작업 수행마다 매번 쓰레드를 생성하지 않기 때문에 쓰레드 생성, 소멸에 발생하는 오버헤드를 줄일 수 있음특징미리 생성된 쓰레드를 재사용하여 생성 비용을 줄임 쓰레드 수를 제한하여 시스템 자원을 효율적으로 관리여러 개의 쓰레드를 사용하여 비동기 작업 처리 가능Core Pool Size & Maximum Pool Size Core Pool Size: 쓰레드 풀에서 최소한으로 유지하는 쓰레드 수Maximum Pool Size: 쓰레드 풀에서 가질 수 있는 최대 쓰레드 수동작 방식:작업이 들어오면 Core Pool Size까지는 새 쓰레드를 생성Core Pool Size 도달 후에는..

백엔드/Spring 2024.10.30

[Spring] 모니터링 환경 구성

모니터링 환경 구성 3단계대시보드애플리케이션 추적로그1. 대시보드 시스템의 전반적인 상태를 한눈에 파악할 수 있도록 시각화  구성 요소Metric: CPU 사용량, 메모리, 네트워크 트래픽 등 지표를 포함시각화: 그래프, 차트, 게이지 등을 사용하여 데이터를 직관적으로 표현알림 및 경고: 특정 임계치를 초과할 때 경고를 표시알림 구분경고: 일 1회 직접 확인해도 되는 수준의 문제심각: 즉시 확인해야 하는 문제 모니터링 대상시스템 Metric애플리케이션 Metric비즈니스 Metric툴MicrometerPrometheusGrafana등등2. 애플리케이션 추적애플리케이션의 성능과 사용자 경험을 모니터링구성 요소트랜잭션 추적: 요청 처리 시간, 응답 시간, 오류율 등을 추적하여 병목 현상을 파악사용자 행동 분..

백엔드/Spring 2024.10.12

[Spring] Actuator

Spring Boot - Actuator애플리케이션의 운영 상태를 모니터링하고 관리할 수 있는 다양한 기능을 제공하는 모듈주로 프로덕션 환경에서 애플리케이션의 상태를 확인하고, 메트릭을 수집하며, 로그를 추적하고, 설정을 점검하는 데 사용주요 기능1. 헬스 체크 (Health Checks) 애플리케이션의 건강 상태를 확인할 수 있는 엔드포인트를 제공데이터베이스, 메시지 브로커, 캐시 등 다양한 의존성의 상태를 체크할 수 있음/actuator/health 엔드포인트를 통해 접근상태 반환UP: 애플리케이션이 정상적으로 작동하고 있는 상태DOWN: 애플리케이션이 작동하지 않는 상태 OUT_OF_SERVICE: 애플리케이션이 현재 요청을 처리할 수 없는 상태 -> 서비스가 비활성화 상태인 경우UNKNOWN: 애..

백엔드/Spring 2024.10.08

[Spring] Spring Boot 외부 설정

외부 설정하나의 애플리케이션을 다른 환경에서 사용하기 위해 각각 환경에 따른 설정값을 주입하는 방식설정 값 내부 포함각 환경에 맞는 설정 값으로 빌드하는 방식단점각 환경마다 별도의 빌드 필요각 환경마다 빌드 결과물이 다름최종 빌드 결과물을 다른 환경에서 사용할 수 없음실행 시점 외부 주입배포 환경과 무관한 하나의 결과물을 생성하고 실행 시점 외부에서 설정 값을 주입하는 방식장점하나의 동일한 빌드 파일을 여러 환경에서 사용 가능새로운 환경 추가 시 추가 빌드 없이 새로운 설정 값 주입으로 사용 가능설정 방법OS 환경 변수: OS에서 지원하는 외부 설정, 해당 OS를 사용하는 모든 프로세스에서 사용자바 시스템 속성: 자바에서 지원하는 외부 설정, 해당 JVM안에서 사용자바 커맨드 라인 인수: 커맨드 라인에서..

백엔드/Spring 2024.10.05

[Spring] Jar & SpringBoot Jar

Jar (Java Archive)Java 프로그램 및 관련 리소스를 패키징 하는 데 사용되는 파일 형식Main-Class가 정의된 경우 실행 가능일반 Jar 구조OriginalJar.jar│├── META-INF│ └── MANIFEST.MF│├── com│ └── example│ ├── MainClass.class│ ├── HelperClass.class│ └── resources│ └── config.properties│└── images └── logo.png Jar 단점내부에 jar 파일을 포함할 수 없음 -> 라이브러리 포함 불가능포함시킨다 해도 인식 불가내장 Tomcat 라이브러리를 가지고 빌드하여도 사용 불가능FatJar (übe..

백엔드/Spring 2024.09.28

[Spring] 스프링 부트

Spring Boot스프링 프레임워크를 기반으로 한 프레임워크 애플리케이션 개발을 간소화하고 빠르게 할 수 있도록 도와줌주요 특징자동 설정: 애플리케이션의 클래스패스에 있는 라이브러리와 설정을 기반으로 필요한 설정을 자동으로 적용Standalone 애플리케이션: 독립 실행형 애플리케이션을 지원 -> 별도의 웹서버를 설정하지 않고도 내장된 톰캣이나 제티서버를 사용할 수 있음의존성 관리: Maven 또는 Gradle과 같은 빌드 도구를 통해 필요한 라이브러리를 쉽게 관리할 수 있음, 스프링 부트 스타터라는 의존성 집합을 제공 -> 특정 기능에 필요한 라이브러리를 쉽게 추가할 수 있음스프링 기반 생태계 통합: 스프링 생태계의 다양한 모듈과 쉽게 통합할 수 있음WAR(Web Application Archive)..

백엔드/Spring 2024.09.27

[Spring] Querydsl DTO & 동적 쿼리

Querydsl DTO 조회Querydsl 사용하여 결과로 DTO를 반환할 때 사용하는 방법프로퍼티 접근JPAQueryFactory를 사용하여 쿼리를 실행한 후 select 절에서 DTO의 getter 메서드를 호출Projections.bean()를 select절에 사용하여 Getter 호출을 위한 프로퍼티 작성DTO에 Getter와 Setter가 존재해야 함 필드명과 Getter, Setter 명이 같아야 함 //프로퍼티 접근List users = queryFactory .select(Projections.bean(UserDTO.class, QUser.user.name, QUser.user.age)) .from(QUser.user) .fetch(); 필드 접..

백엔드/Spring 2024.09.26

[Spring] Querydsl

QuerydslJava 기반의 타입 안전한 쿼리 DSL(Domain Specific Language)로 데이터베이스에 대한 쿼리를 객체 지향적으로 작성할 수 있게 해주는 도구다양한 데이터 소스와 통합되어 사용되며 개발자들이 SQL 쿼리를 문자열로 작성하는 대신 타입 안전한 방법으로 쿼리를 생성하고 실행할 수 있도록 도와줌주요 특징타입 안전성: 컴파일 타임에 쿼리를 검증하여 잘못된 필드 이름이나 타입에 대한 에러를 예방하고 런타임 에러 발생을 줄임가독성: SQL 쿼리를 자바 코드 형식으로 작성할 수 있어 가독성이 높음유연성: 다양한 데이터베이스와 ORM 프레임워크와 호환되며 SQL 뿐만 아니라 JPA, MongoDB, Lucene 등 다양한 쿼리 타입을 지원설정 방법개별적인 설정이 필요//Querydsl ..

백엔드/Spring 2024.09.25

[Spring] Spring Data Jpa 확장 기능

Spring Data Jpa 확장 기능Spring Data Jpa는 여러 가지 확장된 기능들을 제공사용자 정의 Repository스프링 데이터 JPA가 제공하는 인터페이스를 직접 구현하려면 구현해야 하는 기능이 너무 많음개발자가 직접 구현한 메서드를 추가하여 사용하기 위한 방법사용 방법사용자 정의 메서드를 선언하는 인터페이스 생성사용자 정의 인터페이스를 상속받는 구현체 생성구현체 내 직접 필요한 메서드를 구현JpaRepository를 상속받아 Spring Data Jpa를 사용하는 Repository 클래스에서 추가로 사용자 정의 인터페이스를 상속Spring Data Jpa가 상속받은 인터페이스 이름 + Impl 조건으로 구현체를 검색해 빈으로 등록리포지토리 인터페이스 이름 + Impl 또는 사용자 정의..

백엔드/Spring 2024.09.24

[Spring] 쿼리 메서드

쿼리 메서드데이터베이스 쿼리를 생성하기 위해 메서드 이름을 사용하여 간편하게 구현할 수 있는 기능개발자가 쿼리를 작성할 때 SQL을 직접 작성하는 대신 메서드 이름을 기반으로 JPA가 자동으로 쿼리를 생성JpaRepository를 상속받는 인터페이스에 구현기본 구조접두어를 사용한 메서드 이름으로 조건을 선택조회: find…By , read…By , query…By get…By,... 에 주로 식별하기 위한 이름이나 설명이 들어가거나 생략 가능//예시: 둘 다 username을 통해 조회하는 메서드List findByUsername(String username)List findUserByUsername(String username)COUNT: count…By,  count를 반환하는 메서드 -> 반환 타입..

백엔드/Spring 2024.09.23
728x90