Spring에서 로깅이 필요한 이유 (SLF4J, Logback, Lombok)
·
BackEnd
Spring에서 로깅이 필요한 이유와 SLF4J, Logback, Lombok 정리Spring 기반 애플리케이션을 개발할 때는 System.out.println() 대신 로깅 프레임워크를 사용하는 것이 일반적입니다. 로깅이 필요한 이유1. 운영 환경에서 디버깅'System.out.println()'은 개발 중에는 간편하지만, 운영 서버에서는 로그 수준 조절, 저장, 관리가 어렵습니다. print와 log의 성능 수준도 매우 크게 차이가 나기 때문에 성능에도 큰 영향을 미칩니다.로깅 프레임워크는 애플리케이션의 동작 흐름을 파악하고 문제를 분석하는 데 필수적입니다. 2. 로그 레벨 제어TRACE, DEBUG, INFO, WARN, ERROR 등 다양한 로그 레벨을 제공환경에 따라 로그 수준을 조절할 수 있..
데이터베이스와 CRUD (JPA 개념)
·
BackEnd
데이터베이스와 CRUD데이터베이스와 CRUD가 필요한 이유는?대량의 데이터를 체계적으로 저장, 관리, 조작하여 정보의 무결성과 일관성을 유지하면서 실제 애플리케이션 개발에서 사용자의 다양한 데이터를 안정적으로 처리하기 위한 기본 기술이기 때문관계형 데이터베이스(RDS)관계형 데이터베이스(RDS)란?행(Row)과 열(Column)으로 구성된 표형태로 저장하고 관리하는 데이터베이스. 다른 테이블과 '관계'라는 개념으로 연결되어 구조적으로 데이터를 관리할 수 있음.스키마(schema)스키마는 데이터베이스의 전체 설계도와 같음. 테이블 사이의 관계나 규칙이 무엇인지를 정의하고 데이터베이스에 대한 전반적인 정의가 포함됨컬럼(column)테이블 안에서 데이터를 저장하는 세로 방향의 필드. 각 컬럼은 특정한 데이터 ..
스프링 빈(Spring Bean)과 의존성 주입(DI: Dependency Injection)
·
BackEnd
스프링 빈과 의존성 주입스프링 빈이란?스프링 컨테이너에 의해 관리되는 객체를 스프링 빈이라고 함. 스프링 빈으로 등록된 클래스는 스프링 어플리케이션 실행 시 컨테이너가 자동으로 생성하고, 필요할때 의존성 주입까지 자동으로 하게 된다.스프링 빈(Spring Bean)개념스프링 컨테이너에 의해 관리되는 객체. 개발자가 직접 객체를 생성하고 관리하지 않아도 된다.기본적으로 스프링 빈의 인스턴스는 싱글톤으로 관리되기 때문에 트래픽이 많은 환경에서도 메모리 부담을 최소화할 수 있다.싱글톤 패턴이란? 객체의 인스턴스가 오직 1개만 생성되도록 구현한 디자인 패턴. 생성자가 여러 차례 호출되더라도 실제로 생성되는 객체는 하나이며, 가장 처음 호출된 생성자만 객체 인스턴스를 반환하고 이후에는 기존의 인스턴스를..
디자인 패턴과 패키지 구조
·
BackEnd
디자인 패턴과 패키지 구조디자인 패턴이란?디자인 패턴은 프로그램을 개발하는 과정에서 자주 발생하는 구조 문제를 정리해서 상황에 따라 사용할 수 있는 몇 가지의 패턴으로 정리한 것장점코드의 재사용성 증가일관된 개발 스타일 유지협업 시 원활한 유지보수 및 확장 용이패키지 구조란?패키지 구조는 특정 기준에 따라 클래스들을 패키지(폴더)로 나누어 관리하는 것을 의미함2가지 구조게층형 구조객체가 수행하는 역할을 계층형으로 구분도메인형 구조도메인 모델에 따라 패키지를 구분하고 도메인 별 계층을 같은 패키지 내에서 관리하는 방법MVC 패턴(Model-View-Controller)실제로는 매우 다양한 종류의 디자인 패턴이 존재하지만, 스프링을 사용하는 백엔드 개발자들이 자주 접하게 되는 MVC패턴을 다루기로 했습니다!..
API의 구현과 API 명세서-2
·
BackEnd
API 구현과 API 명세서 - 2RequestMapping을 이용한 HTTP method 처리 구현@RequestMappingHTTP 메서드와 Controller의 메서드를 연결하는 가장 기본적인 방법파라미터에 URL과 HTTP메서드의 종류를 전달하여 연결함.@PostMappingPOST 요청과 Controller의 메서드를 연결하는 방법.파라미터에 URL을 전달하여 연결함.메서드의 파라미터에 @RequestBody 어노테이션을 추가하여 POST 요청의 body를 자바 객체로 받아옴@GetMappingGet요청과 Controller의 메서드를 연결하는 방법파라미터에 URL을 전달하여 연결함.@PathVariable 또는 @RequestParam 어노테이션을 이용하여 쿼리스트링을 자바의 문자열로 받아옴@..
API의 구현과 API 명세서-1
·
BackEnd
API와 API명세서API란?API(Application Programming Interface)는 두 소프트웨어가 서로 통신할 수 있도록 하는 언어나 메시지의 형식주로 서버와 클라이언트가 통신하기 위해 사용되기도 하지만, 외부 개발자에게 특정 기능을 제공하기 위해 사용되기도 한다.위와 같이 공개된 API를 Open API라고 하고 여러 기업과 공공기관에서 제공하고 있다.API명세서란?API의 사용 방법, 요청 및 응답의 데이터 구조, 인증 방식과 같이 API와 관련된 세부적인 내용들을 설명해 놓은 문서를 의미한다.API에 포함되는 내용요청 정보HTTP 메서드 종류 (ex, POST, GET, PUT, DELETE,,,,)엔드포인트(URL)요청에 대한 header와 body응답 정보응답의 상태 코드(ex..
HTTP 요청의 구조와 통신 과정 / HTTP 메서드
·
BackEnd
HTTP 요청의 구조와 통신 과정HTTP는 서버-클라이언트 구조에서 통신을 위한 프로토콜이며 클라이언트의 요청과 서버의 응답은 정해진 구조에 맞게 구성되어 전달된다.클라이언트의 요청클라이언트에서 서버로 전달되는 요청의 구조는 요청라인, 헤더(Header), 본문(Body)로 구성된다.서버의 응답서버에서 클라이언트로 전달되는 응답의 구조는 상태라인, 헤더(Header), 본문(Body)로 구성된다.HTTP요청과 응답의 구성 요소요청 라인(Start line)클라이언트가 서버로 전달하려고 하는 요청의 세부적인 경로인 URL과 요청의 종류를 나타내는 HTTP 메서드 등이 포함되어 있다.상태 라인(Status line)서버가 클라이언트로 전달하는 요청의 상태를 표현하는 상태 텍스트(Status Text)와 이를..
클라이언트-서버 구조와 HTTP란?
·
BackEnd
서버 - 클라이언트 구조란?웹 서비스를 서버와 클라이언트로 분리시킨 설계방식. 2티어 아키텍처 혹은 클라이언트-서버 아키텍처라고 함클라이언트클라이언트는 브라우저 상에서 동작하는 페이지나 기기에 설치하여 사용하는 애플리케이션 등을 의미하고, 사용자와 직접 상호작용합니다.서버서버는 사용자가 클라이언트를 통해 보낸 요청을 처리하고 올바른 데이터를 반환하는 역할을 함서버 - 클라이언트 구조의 특징확장성(Scalability)서버가 클라이언트와 독립적이기 때문에 서버의 확장 혹은 트래픽 분산에 유연하게 대처가 가능멀티플랫폼 지원서버는 브라우저, 모바일 앱 등의 다양한 클라이언트나 플랫폼에 대해 동일한 서비스 제공 가능업데이트 및 유지보수 편리클라이언트를 업데이트할 필요 없이 서버의 로직을 변경이 가능HTTP(Hy..
HTTP 헤더2 - 캐시와 조건부 요청
·
BackEnd
캐시와 조건부 요청캐시 기본 동작캐시가 없을때 용량이 어느정도 큰 파일을 서버로 요청을 할때마다 데이터를 다운로드 받아야하고, 비용이 발생한다. 또한 다운로드를 하는 시간이 발생해 사용자 경험이 저하된다.캐시가 있다면 cache-control 로 지정된 시간만큼 캐시에서 다운받은 데이터가 저장되어 있다가 다시 요청을 할때 바로 재사용할 수 있다.다운로드 시간 및 비용이 발생하지 않고 사용자 경험이 향상된다.검증 헤더와 조건부 요청캐시 시간 초과 시 발생하는 상황서버에서 기존 데이터를 변경함서버에서 기존 데이터를 변경하지 않음기존 데이터가 변경되지 않았기 때문에 굳이 다시 다운로드할 필요가 없음. 이를 확인하기 위해 검증헤더가 필요함.검증 헤더 if-modified-since 요청 헤더를 붙여서 캐시에 ..
HTTP 헤더1 - 일반 헤더
·
BackEnd
일반 정보Referer - 이전 웹 페이지 주소이전 페이지 주소A에서 B로 이동할때 Referer: A를 포함해서 요청유입 경로 분석가능요청에서 사용referrer의 오타에서 지어짐User-Agent - 유저 에이전트의 애프리케이션 정보클라이언트의 애플리케이션 정보(웹 브라우저 정보 등등)통계 정보어떤 브라우저에서 장애 발생하는지 파악 가능요청에서 사용Server - 요청을 처리하는 ORIGIN 서버의 소프트웨어 정보응답에서 사용Date - 메시지가 발생한 날짜 및 시간응답에서 사용특별한 정보Host - 요청한 호스트 정보(필수 헤더)요청에서 사용필수하나의 서버거 여러 도메인을 처리해야 할 때하나의 IP 주소에 여러 도메인이 적용되어 있을 때Location - 페이지 리다이렉션웹 브라우저는 3xx 응답의..