본문 바로가기

Web Sever 개발과 CS 기초

(87)
URI와 URL 차이와 구조 URI와 URL의 차이 URI (Uniform Resource Identifier, 통합 자원 식별자)는 인터넷에 있는 자원을 나타내는 유일한 주소이다. URL과 URN을 포함하는 개념이다. URL(Uniform Resource Locator, 파일식별자)은 네트워크 상에서 자원이 어디 있는지를 알려주기 위한 규약이다. URI가 자원의 유일한 주소를 강조한 개념이라면, 자 URL은 주소의 위치를 강조한 개념이다. URI ≥ URL이다. URI의 구조 구성 요소로는 protocol host port(80, 443(https)생략 가능) path(보통 자원의 위치를 나타낸다) query string,(자원에 특정 조건을 제시한다) fagment(긴 문서 중에 특정 헤더, 위치를 지정한다) Reference ..
HTTP Client CP, DB외에 Connection Pool을 사용하는 곳 관련 내용 DB에서 ConnectionPool을 사용하는 이유와 사용 방법 Client ConnectionPool을 사용하는 또 다른 이유 복잡한 HTTPS TLS Handshake 과정 개요 목적 DB외에도 ConnectionPool을 사용하는 HTTP Client CP에 대해서 알아보자. 왜 커넥션 풀이 필요한지, 커넥션 풀이 어떻게 문제를 해결하는 지 알아본다. HTTP Client CP를 사용하는 이유 HTTP 통신을 하기 위해선, Client와 Server가 TCP/IP 프로토콜을 통해 연결되어야 한다. TCP/IP 커넥션 절차 안에는 다양한 과정이 있어서, 연결과 해제에 시간과 자원이 많이 든다. Connection을 보관하는 HTTPClient CP를 사용해 이러한 절차와 자원을 절약할 수 ..
백엔드 개발을 위한 디자인 패턴 종류 개요 목적 디자인 패턴이란 프로그래밍 상황에서 발생하는 문제 패턴을 발견하고 해결 할 수 있는 패턴을 제시한 것이다. Spring 백엔드를 공부하면 다양한 디자인 패턴으로 된 코드들을 만나게 된다. 그래서 자바 예시 코드들을 작성하면서 디자인 패턴의 모양과 특징에 대해서 알아보려 한다. Proxy Pattern 프록시 패턴은 클라이언트가 사용하려고 하는 실제 객체인 것처럼 위장하여 클라이언트의 요청을 대신 처리한다. 프록시 객체 안에는 실제 클라이언트가 요청한 대상인 target이 있어서, 접근을 제어하며 target의 동작을 그대로 수행할 수 도 있고, 부가적 기능을 붙여서 요청을 처리할 수도 있다(Decorate Pattern). //클라이언트는 해당 인터페이스만 알면 프록시를 적용할 수 있게 추상화..
ORM과 JPA, 영속성 쉽게 이해하기 ORM(Object Relational Mapping)이란 ORM은 객체와 관계형 데이터 베이스를 연결한다. 객체 지향 프로그램은 클래스를 사용하지만, 데이터 베이스는 테이블을 사용한다. 이러한 차이 때문에, 어플리케이션에서 DB에 접근할 때는 객체 지향 언어를 포기하고 SQL을 사용해야 했다. 하지만, ORM은 어플리케이션의 객체 지향스러운 언어를 자동을 SQL로 변환하여 둘 사이를 연결한다. 자바 진영의 표준 ORM 기술인 JPA를 통해서 ORM의 역할을 구체적으로 알아보자.(JPA예시를 통해서 본 ORM의 역할) JPA(Java Perisistence API)이란 JPA는 자바 진영의 표준 ORM 기술 인터페이스이다. 어플리케이션과 JDBC사이에 위치하여, 객체 정보와 객체 언어를 SQL로 변환하여..
DB Connection Pool 필요성, Hikari CP 알아보기 connection pool이란 DB Connection Pool을 잘 이해하기 위해, 복잡한 DB connection 획득에 대해서 먼저 알아보자. 어플리케이션은 DB 관련 로직을 수행할 때, DB Connection을 획득해야 한다. 예를 들어, 회원 가입 로직을 실행 할 때, 회원 가입자 목록 DB Table에 접근할 Connection이 필요한 것이다. DB Connection을 획득하기 위해서는 먼저, 어플리케이션은 DB드라이버를 통해 DB와 TCP/IP 커넥션 연결을 한다. 그리고 DB 드라이버를 통해 id, password 인증 정보를 보낸다. DB는 인증 정보를 확인해서 DB 연결이 완료 되었다는 응답을 보낸다. 마지막으로 응답을 받은 DB 드라이버에서 커넥션 객체를 생성한다. 위와 같은 ..
DB OLTP와 OLAP 차이 OLTP(Online Transaction Processing) 온라인 트랜잭션 처리의 약자이다. 데이터베이스 수정을 관리한다. OLTP의 목적은 정확하고 빠르게, INSERT, UPDATE, DELTEE처리 하는 것을 의미한다. 예를 들어 알아보면, 회원가입, 회원 가입 테이블에 이름 id 등 정보를 INSERT하기 비밀번호 변경, 회원 가입 테이블에 비밀번호 정보를 UPDATE하기 회원 탈퇴, 회원 가입 테이블에 사용자의 정보를 DELETE하기 OLAP(Online Analytical Processing) 온라인 분석 처리의 약자이다. DB에 저장되어 있는 데이터를 분석하는 것을 의미한다. OLAP의 목적은 데이터 분석, 통계를 통해 사용자의 의사 결정에 도움을 주는 것이다. 예를 들어 알아보면, 오..
SpringBoot 설정 파일 기능 활용하기(Profile나누기, 환경 변수 설정, 설정 파일 분리, group하기) 개요 목적 SpringBoot 설정 파일의 다야한 기능을 활용해서 개발 친화적인 프로젝트 만드는 방법을 알아본다. 알아볼 설정 파일 기능으로는 Profiles 나누기 profile별로 나누는 서비스 개발 환경 종류 gradle bootrun으로 profile별 실행 방법 설정 파일 환경 변수 가져오기 설정 파일 자체를 분리하기 spring.profiles.group을 통해 profile 그룹 분리하기 Profile 나누기 로컬 환경 실제 배포 환경에 따라 사용할 설정이 다를 때 Profile을 통해서 설정 정보를 편리하게 나눌 수 있다. 실행 시점에만 어떤 profile을 설정하는 지 선택하면 해당 설정 정보를 사용할 수 있다. Profile을 나누는 방법은 spring.config.activate.on..
@ExceptionHandler, @ControllerAdvice를 사용한 예외를 원하는 Response 처리 개요와 목적 스프링 REST API 서버에 정상적인 요청이 오면, 예외 발생 없이, 2XX Status Code와 api 정보를 제공한다. 하지만 잘못된 요청이 왔을 때(잘못된 파라미터 타입 등)는 예외가 발생하고, 그 예외를 catch하여 그에 맞는 Response header, body를 전송한다. 모든 예외를 Controller영역에서 try - catch하여 Response를 설정하면, 코드가 굉장히 복잡해지고, 유지 보수성이 떨어진다. 그래서 예외 발생 시, 스프링의 ExceptionResolver(@ExceptionHandler)를 사용해, 원하는 Response를 반환하는 방법에 대해서 알아보자. Spring이 제공하는 ExceptionResolver 종류 ExceptionResolver가 ..

반응형