본문 바로가기

728x90

분류 전체보기

[SpringMVC][Rest Client] 클라이언트와 서버의 관계 크롬이나 사파리, 익스플로러 같은 웹브라우저는 웹브라우저에서 보이는 HTML 콘텐츠를 웹서버에 요청하고, 웹 서버는 요청에 해당하는 적절한 콘텐츠를 웹브라우저에 응답으로 전달하게 된다 즉 웹브라우저는 웹서버로부터 HTML 컨텐츠를 제공받는 클라이언트가 된다 웹브라우저는 웹서버가 응답으로 전달해주는 HTML컨텐츠를 전달받아서 브라우저 내에 보여준다 여기서 서버 쪽의 콘텐츠 즉, 서버 쪽의 리소스(Resource, 자원)를 이용하는 측이 클라이언트가 된다 서버는 항상 클라이언트에게 리소스를 제공하는 역할만 하는 것이아니라 서버도 다른 서버로부터 리소스를 제공받아야 하는 경우가 많 그런데 프론트의 경우 , 웹브라우저에게는 리소스를 제공하는 입장이니까 서버가 맞지만 Frontend가 B.. 더보기
[SpringMVC][HTTP헤더] HTTP헤더란? HTTP헤더는 HTTP메세지의 구성 요소중 하나로써 클라이언트의 요청이나 서버의 응답에 포함되어 부가적인 정보를 HTTP메세지에 포함할 수 있도록 해준다. 개발자들이 직접 실무에서 사용하는 대표적인 HTTP헤더 예시 2가지 Authorization "Authorization"헤더 정보는 클라이언트가 적절한 자격 증명을 가지고 있는지 확인하기 위한 정보이다 일반적으로 REST API 기반 애플리케이션의 경우 클라이언트와 서버 간의 로그인(사용자ID/비밀번호) 인증에 통과한 클라이언트들은"Authorization"헤더 정보를 기준으로 인증에 통과한 클라이언트가 맞는지 확인하는 절차를 거친다. User-Agent 실무에서 애플리케이션을 구현하다보면 여러가지 유형의 클라이언트가 하나의 서버 애플.. 더보기
[Spring Data JDBC][DDD] DDD(Domain Driven Design)란? DDD(Domain Driven Design)는 우리말로 도메인 주도 설계 정도로 해석할 수 있는데, 용어의 의미 그대로 도메인 위주의 설계 기법을 의미합니다. 그런데 성능, 생산성, 안정성 면에서 뛰어난 애플리케이션을 만들기 위해 가장 중요한 영역인 애플리케이션의 설계는 구현보다 더 어렵습니다. 그래서 오래 전부터 많은 사람들이 어떻게하면 좀 더 나은 애플리케이션을 잘 설계할 수 있을까라고 고민한 결과물 중 하나가 바로 DDD(Domain Driven Design)입니다. DDD 자체는 굉장히 뛰어난 설계 및 구현 기법이라 생각하지만 DDD의 개념을 완벽히 이해하는 것이 쉽지 않기 때문에 많은 학습과 설계 경험이 필요하다고 생각합니다. 그런데 Sprin.. 더보기
[도메인 엔티티 및 테이블 설계][Sample] 샘플 애플리케이션 도메인 엔티티 및 테이블 설계 도메인에서 애그리거트 루트 찾기 [그림 3-43]은 우리가 이번 챕터에서 Spring Data JDBC를 이용해서 구현해야 할 커피 주문 샘플 애플리케이션의 도메인 모델입니다. 우리가 구현하는 커피 주문 샘플 애플리케이션은 학습용이기 때문에 결제, 배송과 같은 도메인은 필요하지 않습니다. 따라서 굉장히 심플한 도메인 모델로 설계되었습니다. ✔ 변경된 요구 사항 그리고 이 전 챕터까지는 기술의 이해를 위해 한 명의 회원이 하나의 커피만 주문한다라고 가정하고 학습을 진행 했지만 이번 챕터부터는 한명의 회원이 하나 이상의 커피를 주문할 수 있는 요구 사항이 반영되기 때문에 [그림 3-43]과 같은 도메인 모델이 도출 되었습니다. 세 개의 애그리거트(Aggrega.. 더보기
[SpringMVC][Spring Data JDBC] 핵심 포인트 데이터 액세스 기술의 유형은 크게 SQL 중심의 기술과 객체(Object) 중심의 기술로 나눌 수 있다. SQL 중심의 기술에는 mybatis, Spring JDBC 등이 있다. 객체(Object) 중심의 기술에는 JPA, Spring Data JDBC 등이 있다. JPA 같은 객체(Object) 중심의 기술을 ORM(Object-Relational Mapping) 기술이라고 한다. 인메모리(In-memory) DB는 애플리케이션이 실행된 상태에서만 데이터를 저장하고 애플리케이션 실행이 중지되면 인메모리 DB 역시 실행이 중지되어 저장된 데이터가 사라진다. Spring에서 지원하는 CrudRepository 인터페이스는 CRUD에 대한 기본적인 메서드를 정의하고 있기 때문에 별도의 CRUD .. 더보기
[SpringBoot][SpringBoot란?] 학습 목표 Spring Boot이란 무엇인지 이해할 수 있다. Spring Framework은 엔터프라이즈 애플리케이션을 개발하기 위한 핵심 기능을 제공하는 Spring Project 중 하나이며 Spring Boot는 Spring Framework의 편리함에도 불구하고 Spring 설정의 복잡함으로 인해 Spring기반 애플리케이션 개발을 시작하기도 전에 어려움을 겪는 문제점을 해결하기 위해 생겨난 Spring Project중 하나이다 Spring Boot을 사용해야 하는 이유를 알 수 있다. 사용해야하는 현실적인 이유 -XML기반의 복잡한 설계 방식 지양 -의존 라이브러리의 자동 관리 : Spring Boot 이전에는 애플리케이션에서 필요한 라이브러리를 사용하기 위해서는 필요한 라이브러리의 이름과 버.. 더보기
[SpringFramework][Architecture] 학습 목표 아키텍처(Architecture)의 의미를 이해할 수 있다. 아키텍처는 건축분야에서 유래된 용어로써 요구사항을 만족하는 건축물을 짓는 데 있어 청사진 같은 역할을 한다 컴퓨터 시스템에서 아키텍처 유형 시스템 아키텍처 시스템 아기텍처는 하드웨어와 소프트웨어를 모두 포함하는 어떤 시스템의 전반적인 구성을 큰 그림으로 표현한 것이다 또한 해당시스템 구성 요소들 간의 상호작용이 어떻게 이루어지는지 등 시스템 정상적으로 동작하기 위한 시스템 아키텍처 안에 표현이 되면 이해 당사자들이 해당 아키텍처를 이해하는데 도움이 된다 시스템 아키텍처 사례 시스템아키텍처를 어떤 식으로 표현하는지, 그리고 어떤 아키텍처를 점직적으로 개선해 나가는 모습을 알아보자 우리가 알아야 할 애플리케이션의 아키텍처를 이해할 수 있.. 더보기
[SpringFramework][PSA] PSA(Portable Service Abstraction) PSA의 의미를 이해할 수 있다. 어떤 클래스의 본질적인 특성만을 추출해서 일반화 하는것을 추상화라고한다 객체지향 프로그래밍 언어인 Java에서 코드로 추상화를 표현할 수 있는 대표적인 방법이 추상클래스와 인터페이스이다. 추상화의 예 예를 들어, 미취학 아동을 관리하는 애플리케이션을 설계하면서 아이 클래스를 일반화(추상화)한다고 가정했을 때 , 먼저 아이를 관리하는 관점에서 아이의 일반적인 속성으로는 이름, 키, 몸무게, 혈액형, 나이 등이 있을테고 아이가 할 수 있는 동작으로는 웃다, 울다, 자다, 먹다 등이 있을꺼다. 이렇게 추출해본 일반적인 아기의 특징을 클래스로 작성해보면 public abstract class Child { protec.. 더보기

728x90