Index
- RESTful한 API를 설계하는 장점은?
- 적절한 관심사 분리의 필요한 이유는?
- Setter를 무분별하게 사용하면 안되는 이유 무엇인가요?
- NoSQL과 RDBMS에 대해 아는대로 설명해주세요.
- 객체지향 프로그래밍이란 무엇이고 어떻게 활용할 수 있나요?
1. RESTful한 API를 설계하는 장점은? |
우선, REST는 Representational State Transfer 의 약자로 소프트웨어 아키텍처의 한 형식으로, HTTP URI (Uniform Resource Indentifier 를 통해 자원(Resource)을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 자원에 대한 CRUD Operation을 적용하는 것을 의미한다. 여기서 말하는 자원(Resource)란, 모든 자원에 고유한 ID가 존재하고, 이 자원은 Server에 존재한다. 자원을 구별하는 ID는 '/todos/{todoId}'와 같은 HTTP URI 이다.
RESTful 한 설계를 하게 되면 얻게 되는 장점들에는 여러가지가 있는데,
[1] HTTP 프로토콜의 인프라를 그대로 사용하므로, REST API 사용을 위한 별도의 인프라를 구축할 필요가 없다.
[2] HTTP 프로토콜의 표준을 최대한 활용하여 여러 추가적인 장점을 함께 가져갈 수 있게 해준다.
[3] HTTP 표준 프로토콜에 따르는 모든 플랫폼에서 사용이 가능하다.
[4] Hypermedia API 의 기본을 충실히 지키면서 범용성을 보장한다.
[5] REST API 메시지가 의도하는 바를 명확하게 나타내므로 의도하는 바를 쉽게 파악할 수 있다.
[6] 여러가지 서비스 디자인에서 생길 수 있는 문제를 최소화한다.
[7] 서버와 클라이언트의 역할을 명확하게 분리한다.
라는 장점들이 있다. RESTful 한 설계의 단점도 몇 가지를 살펴보면,
[1] 표준이 존재하지 않는다.
[2] HTTP Method 형태가 제한적이다.
[3] 브라우저를 통해 테스트할 일이 많은 서비스라면, 쉽게 고칠 수 있는 URL보다 Header 값이 더 어렵게 느껴질 수 있다.
그럼에도 REST가 필요한 이유는
[1] 애플리케이션 분리 및 통합
[2] 다양한 클라이언트의 등장
[3] 최근의 서버 프로그램은 다양한 브라우저와 안드로이드폰, 아이폰과 같은 모바일 디바이스에서도 통신을 할 수 있어야 한다.
이러한 멀티 플랫폼에 대한 지원을 위해 서비스 자원에 대한 아키텍처를 세우고, 이용하는 방법을 모색할 결과에 REST에 관심이 쏠리게 되었다.