이 글은 '스프링 부트 핵심 가이드 - 스프링 부트를 활용한 애플리케이션 개발 실무' 책을 통해 학습한 내용을 정리한 글입니다. 액추에이터 (Actuator) https://docs.spring.io/spring-boot/docs/current/reference/html/actuator.html Actuator는 HTTP 엔드포인트나 JMX를 활용해 어플리케이션을 모니터링하고 관리할 수 있는 기능을 제공하며 spring-boot-starter-actuator 종속성을 추가해야 사용할 수 있다. 엔드포인트 엔드포인트는 어플리케이션의 모니터링을 사용하는 경로이다. 스프링 부트내에 여러 내장 엔드포인트가 있으며, 커스텀 엔드포인트를 추가할 수도 있다. 기본 엔드포인트 URL로 /actuator 가 추가되며, ..
UDP (User Datagram Protocol) 데이터를 데이터그램 단위로 처리하는 프로토콜 비연결 지향적인 프로토콜로 연결 설정 및 해제 과정이 없다. 전송 중 손실된 패킷을 재전송하지 않으므로 신뢰성이 낮다. 신뢰성을 보장하지 않기 때문에, 전송 속도가 빠르다. TCP와 UDP가 생긴 이유 IP의 한계 IP는 인터넷에서 데이터를 패킷 단위로 전송하는 기본 프로토콜이지만, IP는 비연결형 프로토콜로서 데이터의 신뢰성이 낮고, 데이터의 순서를 보장하지 않는다. 또한, IP는 데이터 전송에 대한 흐름 제어나 혼잡 제어와 같은 기능을 제공하지 않고, 오류가 발생하면 ICMP 에서 알려 주기만하고 처리해주지 않는다. TCP와 UDP가 오류를 해결하는 법 TCP : 데이터의 분실, 중복, 순서의 뒤바낌 등을..
TCP/IP 계층 TCP/IP 계층은 현재 인터넷에서 사용되는 통신 방법이다. 1계층 : Network Access Layer OSI 7계층의 물리계층과 데이터 링크 계층에 해당 물리적인 주소로 MAC 을 사용 LAN, 패킷망 등에 사용 2계층 : Internet Layer OSI 7계층의 네트워크 계층에 해당 통신 노드 간의 IP패킷을 전송하는 기능과 라우팅 기능 프로토콜 - IP, ARP, RARP 3계층 : Transport Layer OSI 7계층의 전송 계층에 해당 통신 노드 간의 연결을 제어하고, 신뢰성 있는 데이터 전송을 담당 프로토콜 - TCP, UDP 4계층 : Application Layer OSI 7계층의 세션 계층, 표현 계층, 응용 계층에 해당 TCP/UDP 기반의 응용 프로그램을..
TCP (Transmission Control Protocol) TCP는 연결 지향적인 프로토콜로 세그먼트 전송 전에 연결을 설정하고 연결 종료 시 연결을 해제한다. 또한, 데이터 전송 시 세그먼트의 전송 여부를 확인하고 손실된 패킷을 재전송하므로 데이터의 정확성과 완정성이 보장된다. 이때 사용되는 전송 방식이 3-way handshake(연결) 와 4-way handshake(해제) 이다. 3-way handshake 1단계(SYN) : 서버와의 연결을 위해 SYN(Synchronize) 플래그가 설정된 TCP 패킷을 전송하여 연결을 확인한다. SYN 플래그는 클라이언트가 연결을 초기화하는데 사용되는 플래그이다. 클라이언트는 시퀀스 번호를 무작위로 선택하여 패킷에 포함시킨다. 2단계(SYN+ACK) :..
인덱스 (Index) 인덱스는 데이터베이스의 테이블에 대한 검색 속도를 향상시켜주는 자료구조이다. 테이블의 특정 컬럼에 인덱스를 생성하면, 해당 컬럼의 데이터를 별도의 메모리 공간에 데이터의 물리적 주소와 함께 저장하며, 컬럼의 값과 물리적 주소를 (key, value) 쌍으로 저장한다. 테이블 생성 시 MYD, MYI, FRM 3개의 파일이 생성된다. FRM : 테이블 구조가 저장되어 있는 파일 MYD : 실제 데이터가 있는 파일 MYI : 인덱스 정보가 들어있는 파일 인덱스를 사용하지 않는 경우 MYI 파일은 비어져 있다. 인덱싱하는 경우 MYI 파일이 생성되며 이후에 사용자가 Select 쿼리로 인덱스를 사용하는 컬럼을 탐색할 때 MYI 파일의 내용을 검색한다. 인덱스의 장단점 장점 Full Tab..
이상 현상 (Anomaly) 일반적인 패턴이나 동작으로부터 벗어난 것 즉, 데이터나 시스템에서 예상치 못한 이벤트, 동작, 패턴 등이 나타나는 것 데이터베이스 이상은 일반적으로 설계가 잘못되고 무계층 데이터베이스를 사용하여 발생한다. 이상 현상은 일반적으로 테이블을 분할하거나 결합하여 정규화함으로써 제거된다. 세 가지 유형의 이상 현상 갱신 이상 현상 (Updation/Update Anomaly) 테이블의 일부 행을 업데이트할 때 테이블의 불일치가 발생하면 갱신 이상 현상이 발생한다. 삽입 이상 현상 (Insertion Anomaly) 테이블에 새 행이 삽입되어 있고 테이블에 불일치가 발생하는 경우를 삽입 이상 현상이라고 한다. 삭제 이상 현상 (Deletion Anomaly) 테이블에서 일부 행을 삭제..
로그인 시 Jwt 토큰을 생성하려고 했는데 아래와 같은 에러가 계속 발생했다. Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: io.jsonwebtoken.lang.UnknownClassException: Unable to find an implementation for interface io.jsonwebtoken.io.Serializer using java.util.ServiceLoader. Ensure you include a backing implementation .jar in the classpath, for example jjwt-..
이 글은 '스프링 부트 핵심 가이드 - 스프링 부트를 활용한 애플리케이션 개발 실무' 책을 통해 학습한 내용을 정리한 글입니다. 10장. 유효성 검사와 예외 처리 Bean Validation 어노테이션을 통해 데이터를 검증하는 기능을 제공한다. 유효성 검사를 위한 로직을 DTO 같은 도메인 모델과 묶어서 각 계층에서 사용하면서 검증 자체를 도메인 모델에 얹는 방식으로 수행한다. 코드의 간결함을 유지할 수 있고, 가독성이 좋아진다. Hibernate Validator Bean Validation 명세의 구현체 스프링 부트에서 채택하여 사용하고 있다. JSR-303 명세의 구현체로서 도메인 모델에서 어노테이션을 통한 필드값 검증을 가능하도록 도와준다. 의존성 추가 gradle implementation 'o..
OSI 7 계층 국제 표준화 기구(ISO)에서 정의한 네트워크 표준 모델 네트워크 통신이 일어나는 과정을 7단계로 나눈 것 통신이 일어나는 과정을 단계별로 알 수 있고, 이상이 생긴 단계만 수정하면 된다. 1계층 : 물리계층 (Physical Layer) 비트(bit)를 프로토콜 단위로 사용 데이터 전송에 필요한 물리적 매체를 다루는 계층 케이블, 광섬유, 무선 신호 등과 같은 물리적인 매체를 통해 데이터를 전송하는 과정에서 신호의 송수신 방법, 전송 속도, 전기 신호의 강도와 주파수 등과 같은 물리적인 특성을 다룬다. 데이터의 전송 방식에 따라서 전송되는 신호의 크기, 샘플링 속도, 채널 대역폭 등도 결정되는 경우가 있다. 물리 계층에서 사용되는 장비와 기술 리피터 (Repeater) : 데이터 신호를..
SQL (RDBMS = 관계형 DB) RDBMS에서 데이터를 저장, 수정, 삭제, 검색 RDBMS의 표준화된 스키마를 사용 데이터는 관계를 통해 여러 테이블에 분산되며 이를 통해 데이터의 중복을 방지한다. 처음에 정한 스키마를 준수한 데이터만 테이블에 저장된다. NoSQL (비관계형 DB) 동적인 스키마를 가지고 데이터를 저장. 이를 통해 데이터 모델의 유연성을 제공한다. 대용량의 데이터 처리를 위해 여러 서버에 데이터를 분산하여 저장하고 처리할 수 있다. 읽기와 쓰기 작업이 빠르다. key-value store, bigtable, document db, graph db 등 다양한 데이터 모델을 지원한다. 저장방식에 따른 분류 Key-Value Model : Redis Document Model : Mo..