본문 바로가기

Server Development

(64)
MicroServices 마이크로 서비스에 대해서 이번 블로그에 정리해보려고 한다. 이는 서버 구조 개념으로 기존의 방식을 먼저 소개하고 어떤 방식으로 변화했는지 알아보려고 한다. 우선, 기존에는 Monolith Architecture 기반으로 서버를 구성을 하였다. Monolith Architecture 모든 업무 로직을 하나의 애플리케이션 형태로 묶어 서비스 하는 형태를 의미한다. 한 서버를 생각해보면 검색 기능, 로그인 기능, 메신저 기능 등 다양한 기능들을 한 애플리케이션에 묶어서 개발을 하였었다. 개발 과정을 살펴보면, 여러가지 팀들이 각각 코드 작성을 한 가지 소스코드 저장소에 작성을 하고 이를 빌드, 테스트, 릴리스 과정(젠킨스/CI, 백로그, 테스트)을 통해서 하나의 애플리케이션으로 생성한다. 이는 큰 단점을 갖고..
JPA - Spring JPA 이번에는 JPA를 실제 Spring Boot에서 사용하는 방법에 대해서 적어보려고 한다. 프로그램을 간단하게 요약하자면, 회원을 등록, 삭제, 검색, 추가할 수 있는 일련의 기능을 구현 중에 있다고 가정하고 현재, Service로 부터 Repository에 DTO가 넘어왔음을 가정한다. 다음과 같이 초기 Memeber를 관리하는 DAO가 있다고 가정하자. @Repository("Member") public class MemberJpaStore implements MemberStore{ // Member DB에 Create @Override public String create(Member member) { } // Member DB에서 아이디로 검색 @Override public Member retrie..
Data API - Basic Concept 이번 블로그에서는 Spring(JAVA Application) 과 DB(Mysql, Oracle, Maria DB 등)을 연결하는 방법에 대해서 알아보려고 한다. 먼저 기초적인 개념으로 영속성이 무엇인지 알아보자. 영속성 - 영원히 계속되는 성질이나 능력 영속화 - 물리적인 저장소에 데이터를 저장하는 행위 - 자바에서 SQL을 통해 RDBMS에 데이터를 저장하는 행위 - 객체지향 애플리케이션에서는 객체를 특정 저장소에 저장하는 행위를 의미 즉, DB에 데이터를 저장함으로써 데이터의 영속성을 유지시키는 것을 영속화라고 한다. 밑에 전체적인 흐름을 확인하며 어떻게 저장을 하는지 알아보려고 한다. 기본적으로 MVC 구조에서 Model과 Controller를 좀더 세분화 하면 다음과 같다. Client - Co..
TDD 들어가기에 앞서 먼저 단위 테스트가 뭔지 알아보고 TDD에 대해 설명하고자 한다. 단위 테스트(Unit Test) 모든 함수, 메서드등에 대해 각각 잘돌아가는지 확인을 위해 테스트 케이스를 작성하는 것을 의미. TDD에서 테스트 코드를 작성할 때, 단위 테스트를 사용. 통합 테스트(Integration Test) 모든 함수, 메서드, 클래스 등이 서로 연결관계를 가질때, 모든 모듈간 통합되어 잘 동작되는 지 확인. 기능에 대한 개발 전체를 끝내고 테스트 단위테스트의 원칙(FIRST 원칙) 1. 테스트 코드의 실행은 빨라야 함. 2. 독립적인 테스트가 가능해야 한다. 3. 테스트가 매번 같은 결과를 만들어야 한다. 4. 테스트는 그 자체로 실행하여 그 결과를 확인 할 수 있어야 한다. 5. 만약 TDD 환..
Testing HTTP Request with Insomnia 이번에는 클라이언트-서버 통신 중 HTTP 통신에 대해 테스팅을 하는 방법에 대해서 알아보려고한다. Insomnia에서 어떻게 HTTP 통신을 테스트할지 포스팅할 예정이며, 리소스를 전달할 때는 Body에 담아 전달하려고 한다. Insomnia - HTTP 프로토콜을 이용해 테스팅을 위해 해당 url에 자원등을 전달하고 요청에 대한 응답을 확인하면서 서버를 테스팅 해볼 수 있는 도구, 설치와 회원가입이 요구됨, POST, GET, PUT, DELETE 등을 선택할 수 있으며 Body 또한 타입과 내용을 생성해 전달 가능하다. HTTP 프로토콜뿐만이 아닌 여러가지를 지원하므로 나중에 포스팅할 예정이다. 먼저, 요청 생성을 한다. Insomnia에서는 다음과 같이 여러가지 요청종류를 지원하고 선택하여 사용할..
Restful API 이번엔 Restful API 즉, Rest API에 대해서 알아보려고 한다. 정의 애플리케이션의 데이터와 기능을 외부에 공개하는 방법으로, 사용자는 API로 제공되는 구현 방법에 상관없이 해당 기능을 사용할 수 있다. 원하는 자원을 HTTP URI로 표현하고 리소스의 대한 행위를 HTTP Method로 표현한다. 설계는 아키텍쳐 스타일을 의미하며 표준이 아니고 유연하게 사용가능합니다. 즉, Rest API란 특정 규칙이 정해져있고 그걸 안지킬 시 기능을 사용못하고 그런 것은 아닙니다. 다만 이러한 규칙을 지켜 애플리케이션의 자원을 요청하고 응답하자는 일종의 규칙이자 아키텍쳐 스타일을 의미합니다. 특징 Server - Cleint 구조 : 자원이 있는 쪽 Server, 자원을 요청하는 쪽은 Cleint로,..
API API가 무엇인가? 우선, API는 Application Programming Interface의 약자이다. 인터페이스는 어떤 장치간 정보를 교환하기 위한 수단을 의미하는데 예를 통해 알아보자. A라는 응용프로그램에서 다른 B라는 응용프로그램을 사용할 수 있도록 A에서 B를 제어할 수 있게 만든 프로그램을 의미한다. 즉, API를 사용하면 A라는 프로그램은 B라는 프로그램의 내부 로직을 몰라도 B프로그램에 정의되어 있는 기능을 쉽게 사용할 수 있음을 의미한다. 정리하자면 여기서 A라는 프로그램은 사용자가 될 수도 있고 하나의 웹사이트 하나의 앱도 될 수 있다. A 프로그램은 B 프로그램에 있는 자원을 요청 및 응답할 수 있다. 이를 지원하는 수단, 방법을 'API' 라고 한다.
HTTP 정의 - Hyper Text Transfer Protocol - Pront End(HTML)으로 부터 넘어오는 데이터를 서버에 요청하고 서버로 부터 응답을 받기 위해 정의된 프로토콜을 의미. 특징 - Request/Response -> 항상 HTTP 통신은 Request/Response로 구성되며 text로 설정되어 있다. - Stateless -> HTTP 통신은 절대 과거의 요청이나 응답에 대한 것을 모른다. (로그인 토큰, 브라우저의 쿠키, 세션, 로컬 스토리지 등으로 과거내용 관리) Request 정의) Client가 HTTP 통신을 통해 서버로 보내는 요청 메시지 구조) 1. StartLine : 요청의 시작 단락, 총 세개로 구성 - HTTP Method : 해당 요청이 의미하는 액션, GET..