전체 글 53

[위클리페이퍼] 26.08.24 RESTful APIs 구현하기

Q. 웹 API의 발전 과정에서 SOAP에서 REST로의 전환이 일어난 이유와 그 장단점에 대해 설명하세요. A. 답변 SOAP(Simple Object Access Protocl)XML 기반의 프로토콜로 데이터의 교환을 위한 규칙과 형식을 정의장점 모든 전송 프로토콜과 함께 사용하기 적합HTTP 프로토콜, SMTP 등도 사용 가능XML 네임 스페이스를 통한 쉬운 국제화 및 확장성 포함 ( XML의 모든 기능을 사용가능)엄격한 표준 준수로 높은 신뢰성을 갖고있음단점XML 기반으로 인해 메시지 크기가 크다.이름에 비해 간단하지않음 (개발 복잡도, 처리비용 증가)모바일 환경에 부적합Rest(Representational State Transfer)HTTP를 기반으로 한 아키텍쳐 스타일로 경량화 된 데이터 교..

[위클리페이퍼] 26.08.16 Spring과 Spring Boot 2

수업일 : 26.08.18 Q. Spring에서 AOP(Aspect Oriented Programming)가 필요한 이유와 이를 활용한 실제 애플리케이션 개발 사례에 대해 설명하세요. A. 답변 1. AOP란? AOP란 관점 지향 프로그래밍으로 횡단 관심사(Cross-Cutting Concern)의 분리를 허용함으로써 모듈성을 증가시키는 것이 목적인 프로그래밍 패러다임 또는 프로그래밍 방법론을 의미하며 여러 객체에 공통으로 적용할 수 있는 기능을 분리해서 재사용성을 높여주는 기법으로 Spring에만 존재하는 개념은 아니다. 즉, 핵심 기능의 코드를 수정하지 않으면서 공통 기능의 구현을 추가하는 것이 AOP의 기본개념이다.2. AOP 사용 용어 : Spring에서만 사용되는것이 아닌 AOP자체에서 사용되..

[TIL] API Response 템플릿 및 예외처리 중앙화

수업일 : 26.08.14API Response는 왜 템플릿화가 되어야 할까?문제 상황 : API를 개발할 때 응답값으로 각 엔티티에 맞는 DTO만 그대로 반환한다면성공 시 : UserDto, PaymentDto 등 케이스마다 다른 구조가 그대로 나감실패 시 : 어떤 API는 문자열 메시지만, 어떤 API는 예외 스택트레이스가 그대로 나가는 등 제 각각 나감위와 같은 상황으로 응답이 나간다면, 클라이언트는 API마다 이건 성공인가? 실패인가? 에러면 어디서 메시지를 꺼내야 하지?라는 생각을 하게 될 거고 매번 다르게 파싱 하는 상황이 발생할 것이다. 또한 프론트엔드 코드도 API 응답 처리 로직을 엔드포인트마다 따로 만들어야 하니 일관성도 무너지고 API가 늘어날수록 확장성도 매우 떨어질 것이다.해결책 ..

[TIL] File 데이터는 무슨 메타 데이터를 갖고있고 어떻게 웹서버로 요청하는가?

수업일 : 26.08.14File 은 어떤 데이터로 구성되고 그걸 어떻게 HTTP로 보낼 수 있을까 파일이 갖고 있는 데이터파일명(filename) : 원본 파일 이름파일 타입(MIME Type) : image/png, application/pdf 등 (Content-Type으로 표현된다.)파일 크기(size) : 바이트 단위실제 바이너리 데이터(binary content) : 텍스트가 아닌 이진 데이터 그 자체이다. 어떻게 서버로 보낼 수 있는가일반적으로 JSON을 보내는 Content-Type: application/json은 텍스트 데이터만 담을 수 있기에 파일 + 다른 텍스트 필드를 같이 보내려면 multipart/form-data라는 별도의 인코딩 방식을 사용해야 한다multipart/form-..

[TIL] 웹 브라우저와 웹 서버의 통신 방식

수업일 : 26.08.14웹브라우저와 웹서버 어떤 방식으로 통신하는 걸까?웹 변천사에서 내용을 정리했던 것처럼 웹은 처음에 문서 단순 페이지를 통신하기 위한 목적으로 개발되었다 서로 통신을 위해 선 HTTP (Hypertext Transfer Protocol) 통신 규격을 사용하였고 현대 모든 웹 브라우저와 웹 서버사이의 통신 기술들은 HTTP를 제공하는 프로토콜로만 통신이 가능하다웹 통신 방식/기술 : REST / GraphQL / gRPC / WebRTC / WebSocket HTTP의 구조 (🔗MDN 문서) HTTP Header : HTTP 통신 메시지에서 메타데이터를 담고 있는 공간 블로그 참조 General Headers (일반 헤더) : HTTP 요청과 응답 시 모두 사용하는 헤..

[코드리뷰] 스프린트 2, 3 요약집

스프린트 미션 2 리뷰 정리1. Git과 GitHub을 통해 프로젝트를 관리할 수 있다.2. 채팅 서비스의 도메인 모델을 설계하고, Java로 구현할 수 있다.3. 인터페이스를 설계하고 구현체를 구현할 수 있다.4. 싱글톤 패턴을 구현할 수 있다.5. Java Collections Framework에 데이터를 생성/수정/삭제할 수 있다.6. Stream API를 통해 JCF의 데이터를 조회할 수 있다.[심화] 모듈 간 의존 관계를 이해하고 팩토리 패턴을 활용해 의존성을 관리할 수 있다. 1. 예외 처리 시 원인 예외 함께 전달하기처음에는 예외가 발생했을 때 단순히 에러 메시지만 전달하고 있었다.catch (IOException e) { throw new RuntimeException(..

[위클리페이퍼] 26.08.09 Spring과 Spring Boot 2

Q. 웹 서버(Web Server)와 WAS(Web Application Server)의 차이를 설명하고, Spring Boot의 내장 톰캣이 이 둘 중 어디에 해당하는지 설명해 주세요. A.WebServer 정적 페이지를 제공하는 Server로 단순 페이지 제공형식으로 대표적으로 Nginx가 존재한다. WAS는 기본적으로 WebServer에 Application을 합쳐 저서 동적인 데이터베이스 접근 등이 가능해져 동적 페이지를 만들어 주는 역할을 한며 대표적으로 Tomcat이 존재함 WAS는 기본적으로 WebServer의 기능도 제공하며 추가적으로 동적인 페이지 제공Spring Boot의 내장 톰캣은 WAS형태를 갖고 있다. 해설 (팀원과 토론 후 추가 - 26.08.10)웹 서버- 정적 컨텐츠(HTM..

[TIL] 프로젝트 개발 아키텍처와 시스템 아키텍쳐

수업일 : 26.08.07 도메인 용어바운디드 컨텍스트 : Member 도메인에 10개의 서버가 있다고 하면 그 10개의 서버를 모두 묶은 단위를 의미하며 MSA상의 경계범주도메인 서비스 : Member 도메인의 완전한 값을 핸들링하기 위한 Service도메인 이벤트 : 비동기적으로 처리되는 것이며 도메인 정보기반으로 이벤트를 발행 (메시지 전송, 후속처리 등등) 바로 처리되지 않아도 됨비즈니스 목적 자체에 필수적이 아님도메인 내 필드에 List형태로 이벤트를 발행해서 갖고만 있고 ApllicationService에서 실질적 실행도메인 내에서 발행해서 관리하는 이유는? getter, setter 없이 이벤트에 필요한 모든 정보를 사용하여 이벤트 객체 생성가능 애그리거트 : 핵심 비즈니스가 모여있는 곳으로..

[TIL] 프로젝트 개발 아키텍처

수업일 : 26.08.06프로젝트 개발 아키텍처(Architecture)란?프로젝트 내 코드를 어떻게 구성할 것인가를 정하는 것으로 크게 4개를 정리함!3-Layered : 구체 클래스 책임분리Hexagonal(Ports & Adpators) : 인터페이스 기반 연결DDD(Domain-Driven) : 순수 비즈니스 로직만을 담은 도메인 클래스CQRS(코드레벨) : 읽기/쓰기로 각각의 독립된 애플리케이션 코드 1. 3-Layered 아키텍처클래스 → 클래스 → 클래스SRP(단일책임원칙 - SOLID) 통해 비즈니스 로직 레이어를 외부와 분리한다.클래스 단위로 연결한다 @Controller → @Service → @Repository @Controller@RequestMapping("/api/users"..

[TIL] Spring MVC 원리와 Bean등록, 주입 방법은?

Spring MVC 원리를 알아보기 전에 MVC란 무엇인가템플릿 엔진 동작 원리로 이해하는 WAS의 MVC (Model -View - Controller)WAS에서의 MVCController : DispatcherServlet을 통해 요청을 전달받고, 처리 결과(응답 데이터)를 반환함Model : Controller가 Service/Repository를 통해 조회·조작한 데이터를 담아 View에 전달하는 역할View : Model과 ViewTemplate이 합쳐져서 만들어진 웹 페이지를 응답으로 내보냄ViewTemplate : 반복적인 템플릿Model + ViewTemplate 은 템플릿 엔진이 조합을 하여 동적 웹페이지를 생성 Spring MVC 구조 Spring에서 제공하는 역직렬화, 직렬화Argum..

반응형