REST 41

Kong API gateway #3 - Kong on Kubernetes

오픈소스 API 게이트웨이 Kong#3 쿠버네티스 Kong조대협 (http://bcho.tistory.com) Kong KubernetesAPI 게이트웨이가 마이크로서비스의 중요 컴포넌트이다 보니, Kong이 마이크로 서비스에 적합한 K8S (aka. 쿠버네티스)에 어떻게 적용될 수 있는지가 궁금해서 아키텍쳐 관련 설명 내용을 찾아보았다. https://konghq.com/blog/kong-kubernetes-ingress-controller/ (아래 그림은, 이 동영상에서 캡춰하여 사용하였다.) 에 보면 Kong summit에서 발표된 영상이 있는데, 정리가 매우 잘되어 있다. 기본 컨셉을 먼저 요약해보자면, Kong의 리소스들은 K8S의 리소스로 등록되어 사용되게 된다. API 게이트 웨이는 Ingr..

로깅 시스템 #5-Spring boot에서 JSON 포맷 로깅과 MDC 사용하기

로깅 시스템 #5 - Spring boot에서 JSON 포맷 로깅과 MDC 사용하기조대협 (http://bcho.tistory.com) 실제로 백앤드 애플리케이션을 자바로 개발할때는 스프링 부트를 사용하는 경우가 대부분이기 때문에 앞에서 적용한 JSON 로그 포맷과 MDC 로깅을 스프링 부트에 적용해보자스프링 부트라고 해도, 일반 자바 애플리케이션에 대비해서 로그 설정 부분에 다른점은 없다.아래와 같이 pom.xml에 logback과 json 의존성을 추가한다. ch.qos.logbacklogback-classic1.2.3 ch.qos.logback.contriblogback-json-classic0.1.5 ch.qos.logback.contriblogback-jackson0.1.5 com.fasterx..

안드로이드에서 REST API 호출하기

REST API를 이용하여, 날씨를 조회하는 간단한 애플리케이션 만들기 조대협 (http://bcho.tistor 네트워크를 통한 REST API 호출 방법을 알아보기 위해서, 간단하게, 위도와 경도를 이용하여 온도를 조회해오는 간단한 애플리케이션을 만들어보자이 애플리케이션은 경도와 위도를 EditText 뷰를 통해서 입력 받아서 GETWEATHER라는 버튼을 누르면 네트워크를 통하여 REST API를 호출 하여, 날씨 정보를 받아오고, 해당 위치의 온도(화씨) 출력해주는 애플리케이션이다. 날씨 API 는 http://www.openweathermap.org/ 에서 제공하는데, 사용법이 매우 간단하고, 별도의 API인증 절차가 필요하지 않기 때문에 쉽게 사용할 수 있다. 사용 방법은 다음과 같이 쿼리 스..

REST JWT(JSON Web Token)소개 - #1 개념 소개

JWT(JSON Web Token)을 이용한 API 인증 - #1 개념 소개조대협 (http://bcho.tistory.com) REST API에 대한 보안과 인증이 화두가 되면서 많이 언급되는 것이 OAuth인데, 근래에 들어서 화두가 되고 있는 것이 JWT (JSON Web Token)이라는 표준이다. Claim기반 토큰의 개념 OAuth에 의해서 발급되는 access_token은 random string으로 토큰 자체에는 특별한 정보를 가지고 있지 않는 일반적인 스트링 형태 이다. 아래는 페이스북에서 발급된 access_token의 형태로 일반적인 문자열 형태임을 확인할 수 있다. API나 서비스를 제공하는 서버 입장에서 그 access_token을 통해서 사용자에 연관된 권한(예를 들어 scope..

Spring boot 살펴본 느낌

Spring boot 살펴본 느낌 요즘 Spring Boot가 하도 유행이길래,잠깐 REST API Expose하는 시나리오와 DB 연동 시나리오등 몇가지 일반적으로 웹 개발하는데 사용되는 시나리오들을 살펴 보았다.전체적인 느낌은 node.js나 ruby on rails와 같은 모던 웹 기술의 생산성을 따라잡기 위해서 무단히 노력했다는 점. 그래서 코드 생산성은 유사하거나 약간 열세? 정도 일거 같은 느낌인데, 왠지 개운하지 않은 뒷맛이 남는다고나 할까? 컨셉적으로 복잡하고 정교한 프로그래밍을 위한 프레임웍을 이용해서 단순성을 부여하다 보니, 빠지거나 아니면 디폴트 설정으로 인해서 위험한 부분이 있을 것 같은 느낌인 든다. 일단 코드 생성 부분을 보면Maven 프로젝트를 이용해서 생성한 후에, JSON ..

Thrift, Avro and Protocol Buffers

Thrift에 대해서 잘 설명해놓은 글 http://thrift-tutorial.readthedocs.org/en/latest/thrift-stack.htmlThriftRPC 지원프로그래밍 언어 커버리지가 넓음TLS 기반의 Secure 프로토콜 지원Map,List 지원 PBIDL 정의가 조금 더 직관적"Serialize/Deserialize 전용 (Message 정의용) :그래서 다른 Transport 프로토콜이 필요함"-다른 Protocol을 통해 Tunneling 함 (HTTP,AMQP,심지어 Thrifit까지,Netty의 경우 확장 플러그인이 있음)Map,List등을 지원하지 않음

REST API의 이해와 설계-#3 API 보안

REST API의 이해와 설계 #3 API 보안 REST API 보안 API 보안에 대해서는 백번,천번을 강조해도 과함이 없다. 근래에 대부분의 서비스 시스템들은 API를 기반으로 통신을 한다.앱과 서버간의 통신 또는 자바스크립트 웹 클라이언트 와 서버간의 통신등 대부분의 통신이 이 API들을 이용해서 이루어지기 때문에, 한번 보안이 뚫려 버리면 개인 정보가 탈취되는 것 뿐만 아니라 많은 큰 문제를 야기할 수 있다. REST API 보안 관점API는 보안 포인트에 따라서 여러가지 보안 관점이 존재하는데, 크게 아래와 같이 5가지 정도로 볼 수 있다. 인증 (Authentication)인증은 누가 서비스를 사용하는지를 확인하는 절차이다.쉽게 생각하면 웹 사이트에 사용자 아이디와 비밀 번호를 넣어서, 사용자..

REST API 이해와 설계 - #2 API 설계 가이드

REST API 이해와 설계 #2 API 설계 가이드 REST API 디자인 가이드그러면 REST의 특성을 이해하고 나쁜 안티패턴을 회피해서 REST API 디자인은 어떻게 해야 할까? 짧지만 여기에 몇가지 디자인 방식에 대해서 소개 한다. REST URI는 심플하고 직관적으로 만들자REST API를 URI만 보고도, 직관적으로 이해할 수 있어야 한다 URL을 길게 만드는것 보다, 최대 2 depth 정도로 간단하게 만드는 것이 이해하기 편하다./dogs/dogs/1234URI에 리소스명은 동사보다는 명사를 사용한다.REST API는 리소스에 대해서 행동을 정의하는 형태를 사용한다. 예를 들어서POST /dogs는 /dogs라는 리소스를 생성하라는 의미로, URL은 HTTP Method에 의해 CRUD ..

REST API의 이해와 설계-#1 개념 소개

REST API의 이해와 설계#1-개념 소개 REST는 웹의 창시자(HTTP) 중의 한 사람인 Roy Fielding의 2000년 논문에 의해서 소개되었다. 현재의 아키텍쳐가 웹의 본래 설계의 우수성을 많이 사용하지 못하고 있다고 판단했기 때문에, 웹의 장점을 최대한 활용할 수 있는 네트워크 기반의 아키텍쳐를 소개했는데 그것이 바로 Representational safe transfer (REST)이다. REST의 기본REST는 요소로는 크게 리소스,메서드,메세지 3가지 요소로 구성된다.예를 들어서 “이름이 Terry인 사용자를 생성한다” 라는 호출이 있을 때“사용자”는 생성되는 리소스 , “생성한다” 라는 행위는 메서드 그리고 ‘이름이 Terry인 사용자’는 메시지가 된다이를 REST 형태로 표현해보면..