안녕하세요? 이번 글은 Bluemix를 이용하여 간단한 클라우드 애플리케이션을 디자인하고 만들어 가는 과정을 내용으로 연재되고 있습니다. 아래와 같은 순서로 진행되고 있으므로 참고 부탁 드립니다.


  1. 클라우드 환경 이해
  2. 애플리케이션 구상 및 요건 정의
  3. 요건에 대한 Usecase 및 Wireframe 작성
  4. 마이크로 서비스 아키텍쳐 설계
  5. 애플리케이션 서버 환경 준비
  6. 애플리케이션 로컬 개발 환경 준비
  7. 애플리케이션 프로토타입 작성 Part1
  8. 애플리케이션 프로토타입 작성 Part2
  9. 애플리케이션 프로토타입 작성 Part3
  10. 애플리케이션 DevOps 환경 구성

애플리케이션 서버 환경 준비

지난 글에서는 애플리케이션에 대한 서비스 아키텍쳐 설계를 설계했으며, 이번 글에서는 실제 이를 구성하기 위핸 애플리케이션 서버 환경을 준비해보겠습니다. 다양한 서버 환경이 있으나, Cloud Foundry 실행 환경과 Docker Container 실행환경을 제공하는 IBM Bluemix 클라우드 플랫폼을 이용하여 환경을 구성해 보도록 하겠습니다.

서비스 구성 계획

지난 글에서 정의한 서비스를 Bluemix 애플리케이션으로 구성하기 위해 다음과 같이 정리했습니다.

서비스 종류 플랫폼 런타임 영구 저장소 특징
방문 정보 서비스 Cloud Foundry Node.js Cloudant Stateless
임시 출입 카드 서비스 Cloud Foundry Node.js Cloudant Stateless
사용자 정보 서비스 Cloud Foundry Node.js Cloudant Stateless
사용자 인증 서비스 Cloud Foundry Node.js Cloudant Stateless
화면 UI Cloud Foundry Node.js Session

이제 화면 UI가 서비스 API를 어떻게 사용 할 것인지를 결정해야 합니다.

현재 서비스들은 독립적인 URL을 가지고 REST API를 제공하고 있으므로 다음과 같은 방법 중 하나를 선택 할 수 있습니다.

  1. Web Browser에서 이 API를 AJAX 방식으로 호출하는 방식을 이용
  2. 화면 UI가 구동되는 서버 내부에서 CURL이나 HTTP Connection을 이용한 호출 방식

첫 번째 AJAX 방식으로 호출하는 경우 Web Browser에서 API를 호출하게 됩니다. 이 때 API를 제공하는 서비스는 다음과 같은 내용을 검토하고 준비해야 합니다.

1. CORS (Cross Origin Resource Sharing) 가능
2. API Authentication 방법 제시
3. API Access Control 방법 제시
  1. CORS (Cross Origin Resource Sharing)

    일반적으로 Web Browser는 AJAX 호출 스크립트가 실행하는 domain name과 API를 제공하는 서버의 domain name이 다른 경우 보안에 위협이 될 수 있다고 판단하여 정상 호출되지 않도록 합니다. API를 제공하는 서비스라면 어떤 domain에서 접근을 하더라도 처리 될 수 있도록 CORS 설정을 해 주어야 합니다.

  2. API Authentication

    두 번째로, API 사용에 대한 인증 방법 제시는 다양한 방법으로 제공 될 수 있습니다. API 호출 시 Basic Authentication 정보를 입력하는 방식이 될 수도 있고, 미리 지정한 Security Token 정보를 Request Header를 통해 전달하는 방법도 있고, O-Auth와 같이 인증 서버를 통한 방법도 있습니다.

    그러나, Basic Auth나 Security Token인 경우 Web Browser에서 해당 정보가 노출이 될 수 있으므로 상수가 아닌 유효 시간을 가진 형태가 되어야 합니다. O-Auth의 경우는 별도로 구축된 인증서버를 통하는 방법이므로 제일 안전하긴 합니다만 API가 분산이 되어 있는 경우 각각 서비스 별로 인증을 진행해야 합니다.

  3. API Access Control

    애플리케이션 사용자에 따라서 특정 API의 사용 제한이 필요한 경우에 대해 고민해야 합니다. 이 경우 각 서비스별로 인증 정보와 사용자 정보 및 접근 제한에 대한 정보가 공유되어야 합니다.

두 번째, 화면 UI가 구동되는 서버 내부에서 CURL이나 HTTP Connection을 이용한 호출 방식의 경우는 화면 UI에서 API에 대한 요청을 처리하는 형태로 화면 UI와 서비스 사이에 관계만 명확한 정리가 필요합니다. UI 서비스에서 API에 대한 End point를 제공하는 셈이므로 인증이나 접근 관리에 대한 부분을 처리하며, 기능 제공을 위한 API를 서비스로 relay하는 형태가 됩니다. 이 경우는 API 관리 측면에서 UI 서비스의 부담이 늘어나는 단점이 발생합니다.

본 예제에서는 Web Browser에서 이 API를 AJAX 방식으로 호출하는 방식으로 구현합니다. 물론 위에 세 가지를 어떻게 처리할지에 대한 고민이 있습니다만, 사용자 인증이 통과되면 해당 사용자에 대한 정보를 각각 서비스가 정보를 공유하고 기능을 제공하는 형태가 될 것으로 준비하고 있습니다.

Bluemix 환경 구성

  • Bluemix 회원 가입

Bluemix는 IBM Cloud Platform 서비스로 최초 가입 후 30일 동안 별도 결제 정보 없이 trial로 사용 할 수 있습니다. https://bluemix.net에서 회원을 가입을 진행 합니다.

  • UI App 생성

회원 가입이 되었다면 이제 UI 앱를 생성합니다. Bluemix Catalog에는 다양한 Runtime과 서비스를 생성 할 수 있으나 표준유형(Boilerplate)을 이용하면 일종의 템플릿으로 필요한 정보를 미리 구성한 형태의 애플리케이션을 구성할 수 있습니다. Cloudant DB와 연동하는 간단한 Web UI를 제공하는 Node.js Cloudant DB Web Starter를 이용하여 UI 서비스를 생성합니다.

  • 서비스 API용 App 생성

서비스 API를 제공하기 위한 Cloud Foundry App을 생성합니다. 다른 Runtime으로 구성해도 되지만 간단하게 살펴 볼 수 있는 SDK for Node.js로 API 서비스용 앱을 생성합니다.

서비스 종류 유형 호스트 이름
방문 정보 서비스 SDK for Node.js smv-visit
임시 출입 카드 서비스 SDK for Node.js smv-badge
사용자 정보 서비스 SDK for Node.js smv-userinfo
사용자 인증 서비스 SDK for Node.js smv-userauth

참고로, Bluemix 애의 호스트 이름은 mybluemix.net 도메인에서 유일한 이름이 되어야 합니다. 만약 기존에 작성된 앱이 있어 중복되는 경우 정상적으로 연결되지 않으므로 주의 해야 합니다.

  • 기타 필요한 서비스 생성

서비스 API와 UI에서 필요로하는 서비스를 생성합니다. 현재는 사용자 인증 및 접근을 관리 정보 공유를 위한 Mem cache 서비스인 Redis for Cloud를 생성합니다.

근데 Redis for Cloud의 경우 기본 선택 plan이 5GB가 됩니다. 예제를 위한 것이므로 Free plan을 선택하여 사용합니다.

Free plan인 경우 30MB 정도에 접속에 제한이 있습니다만 예제용으로 사용하기에는 충분합니다.

Bluemix 서비스 연결

생성된 CF App과 Redis Service를 선택하여 다음과 같이 연결 정보를 확인 합니다.

연결 작성을 클릭하여 UI 앱과 서비스 앱에 연결합니다.

다음과 같이 연결이 된 상태를 확인 할 수 있습니다.

지금까지 애플리케이션 서비스를 IBM Bluemix 플랫폼에 구성하는 것에 대해 알아 보았습니다. 다음 글에서는 Bluemix CF App 개발을 위한 로컬 환경 구성에 대해 다루도록 하겠습니다.


  1. 클라우드 환경 이해
  2. 애플리케이션 구상 및 요건 정의
  3. 요건에 대한 Usecase 및 Wireframe 작성
  4. 마이크로 서비스 아키텍쳐 설계
  5. 애플리케이션 서버 환경 준비
  6. 애플리케이션 로컬 개발 환경 준비
  7. 애플리케이션 프로토타입 작성 Part1
  8. 애플리케이션 프로토타입 작성 Part2
  9. 애플리케이션 프로토타입 작성 Part3
  10. 애플리케이션 DevOps 환경 구성

참고

토론 참가

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.