기본 콘텐츠로 건너뛰기

8월, 2020의 게시물 표시

REST, REST API, RESTFUL API

[REST (Representational State Transfer)]
    자원을 URI로 표시하고 해당 자원의 상태를 주고 받는 것
    REST하지 못한 API는 ?         CRUD 기능을 전부 POST METHOD로만 처리하는 API         URI에 자원과 id외 정보가 들어가는 경우
[REST 구성 요소]
    자원(Resource): URI     행위(Verb): HTTP METHOD     표현(Representations)
    즉, Rest는 URI를 통해 자원을 표시하고,      HTTP METHO를 이용하여 해당 자원의 행위를 정해주며     그 결과를 받는 것
[REST 특징]
    Uniform Interface (유니폼 인터페이스)         HTTP 표준만 따른다면 어떤 언어 혹은 어떤 플랫폼에서 사용하여도 사용이 가능한 인터페이스 스타일     Stateless (상태 정보 유지 안함)         서버는 각각의 요청을 완전히 다른 것으로 인식하고 처리         이전 요청이 다음 요청 처리에 연관이 되면 안된다
    Cacheable (캐시 가능)         웹 표준을 그대로 사용하기 때문에 HTTP가 가진 캐싱 기능 적용이 가능
    Self-descriptiveness (자체 표현 구조)         Rest API 메시지만 보고도 쉽게 이해할 수 있는 자체 표현 구조
    Client-Server         Rest 서버는 API 제공         클라이언트는 사용자 인증에 관련된 일들을 직접 관리         자원이 있는 쪽을 Server라고 하고 자원을 요청하는 쪽이 Client가 됨         서로간의 의존성이 줄어들기 때문에 역할이 확실하게 구분되어 개발해야할 내용들이 명확해짐
    Layerd System (계층화)         클라이언트는 Rest API 서버만 호출         Rest 서버는 다중 계층으로 구성될수 있음         로드 밸런싱, 암호화, 사용자 인증 등을 추가하여 구조상의 유연성…

MSA (Micro Service Architecture) 기본구성, 구조설계

MSA (Micro Service Architecture) 기본구성, 구조설계
출처 : Medium https://medium.com/@yesesyo

[요약]     - 독립적 배포 가능한      - 스스로 돌아 갈 수 있는 작은 서비스     - 물리적으로 분리된 서비스이지만, 논리적으로는 하나의 어플리케이션처럼 동작     - 서비스끼리 분리되어 있기 때문에 성능, 트랜젝션 관리, DB무결성 이슈는 가장 주의해야할 요소
[장점]     개별 배포 및 무중단 배포 가능 (독립성)     개별 배포가 가능하다는것은 요구사항을 신속하게 반영하여 빠르게 배포할수있다는 효과를 가져옴     특정 서비스에 대한 확장성이 용이함     장애가 전체 서비스로 확장될 가능성이 적음     부분적 장애에 대한 격리가 수월함     신기술의 적용 유연     서비스를 여러가지 언어로 개발/운영 가능
[단점]     전체 서비스가 커짐에 따라 그 복잡도가 기하급수적으로 늘어날 수 있음     서비스 간 호출 시 API를 사용하기 때문에, 통신 비용이나, Latency가 그만큼 늘어남     서비스가 분리되어 있기 때문에 테스트와 트랜잭션의 복잡도가 증가하고, 많은 자원을 필요로 함     데이터가 여러 서비스에 걸쳐 분산되기 때문에 한번에 조회하기 어려움     데이터의 정합성 또한 관리하기 어려움
[MSA 구축 필수요소]     1) Service Discovery         각 서비스들의 네트워크 위치 정보와 가용 상태를 관리할 수 있는 서비스 레지스트리(Service Registry)를 둠             클라이언트가 서비스 레지스트리에게 가용 상태에 있는 서비스의 네트워크 위치 정보를 질의             서버사이드 디스커버리 / 클라이언트사이드 디스커버리 로 구현방식이 나눠짐                 클라이언트사이드 디스커버리                     클라이언트가 직접 서비스 레지스트리에 질의                     클라이…