traefik

물리서버를 사용 할 때, 그리고 VM을 사용 할 적에도 다이나믹한 proxy server는 그다지 필요하지 않았다. 왜냐하면 그들 물리서버와 VM이 다이나믹하지 않았기 때문이다.proxy server(특히 reverse proxy server)는 인터넷 서비스에서 가장 중요한 인프라 중 하나다. 클라이언트와 백앤드 중간에서 보안 감시자의 역할을 해주며, 트래픽을 분산해준다. 또한 복잡한 내부를 단순화 하는 추상화 계층의 역할 도 수행한다. 단순 트래픽 분산 뿐만아니라 도메인 이름, Path등을 기준으로 지능적으로 트래픽을 라우팅한다.

Go에서의 HTTP Session 관리

웹 브라우저를 이용한 HTTP 기반의 데이터 통신에서, 서버는 클라이언트의 상태를 유지하기 위해서 쿠키(cookie)를 사용한다. 세션(session)은 쿠키의 사용 방식 중 하나다. 서버는 클라이언트의 상태를 유지하기 위해서(예컨데 로그인 상태인지, 어떤 상품을 구매했는지, 이전에 어떤 페이지에 머물렀는지 등) 쿠키를 사용한다. 좋은 방법이긴 하지만, 중요 데이터가 인터넷을 가로지른다는 점과 유저의 PC에 저장이 된다는 점 때문에 위험한 방법이다. 간단한 정보는 상관 없지만, 유저의 아이디나 이메일등과 같은 개인정보를 쿠키로 주고 받는 것은 좋은 방법이 아니다.

HBase

HBase를 학습하기 위한 위키페이지다. 학습하는 이유는 다음과 같다. 1. IoT 플랫폼의 데이터 저장 과 분석을 위한 백앤드로 Kafka와 HBase를 고민하고 있다. 1. 아마 가장 일반적인 구성일 텐데, 실제 이들 환경을 만들어 본다. 1. 실제 IoT 플랫폼의 데이터 저장 / 분석 시스템을 구성한다.

Hbase 설치

Hbase는 HDFS기반으로 작동한다. 따라서 반드시 Hadoop 환경을 구성해야 한다. 문서를 따라서 설치하자. 현재 Hadoop 환경은 다음과 같다. VirtualBox로 구성했다. 문서는 Hadoop 구성을 끝냈다고 가정하고 진행한다. hadoop01, hadoop02, hadoop03 3개의 노드로 구성한다. hadoop01은 Masternode, hadoop02/03은 Datanode다./etc/hosts 내용이다. 3개 노드 모두 동일하다.$ cat /etc/hosts127.0.0.1 localhost# The following lines are desirable for IPv6 capable hosts

HBase 소개

HBase(Hadoop database)는 하둡 기반의 분산 데이터베이스로 빅데이터를 저장하기 위해서 사용한다. NoSQL로 분류되는데, 많은 NoSQL 솔류션들이 그렇듯이 스키마 변경없이 자유롭게 데이터를 저장 할 수 있다. HDFS위에서 작동하기 때문에, HDFS의 데이터의 가용성과 확장성을 그대로 이용 할 수 있다. 데이터베이스 CAP 이론에서 HBASE는 CP 타입(Consistency & Partition tolerance) 시스템으로 구글의 BigData모델과 유사한 기능을 제공한다.

HBase 애플리케이션 개발

HBase 애플리케이션개발은 보통 Java를 이용하겠지만, go 언어를 이용해서 개발해 보려고 한다. 굳이 go를 이용하는 이유는 아직 java에 익숙치 않아서이다.(결국 java를 해야 할 것 같다.)virtualbox를 이용해서 하둡클러스터를 만들고 그 위에 hbase를 구성했다. 문서그대로 구성했으니 참고 한다.개발에 사용할 데이터베이스다.의 데이터베이스 구조를 그대로 사용했다. personal data와 professional data 두 개의 컬럼 패밀리를 가지고 있다. 여기에 name, city, designation, salary 패밀리 정보들을 저장한다.

인스톨러

도커로 배포되는 웹 애플리케이션을 쉽게 인스톨하는 방법을 찾는다. 인스톨은 두 가지 요소를 가지고 있어야 한다. 1. 시스템과 애플리케이션에 대한 권한을 가진 유저만이 설정 할 수 있어야 한다. 1. 쉽게 설정 할 수 있어야 한다. 배포하는 사람 입장에서 가장 손쉬운 방법은 설정파일을 이용하는 것이다. 설정파일을 수정하기 위해서는 해당 서버와 애플리케이션에 대한 권한을 가지고 있어야 하니, 그 자체로 1번을 만족한다. 하지만 사용자에게는 여간 귀찮은 작업일 것이다. 애플리케이션이 도커로 배포되는 경우에는 더 문제다. 사용자는 도커에 접근해서 설정파일을 편집해야 하는데, 이를 위해서 도커 이미지는 bash, vim과 같은 에디터를 포함해야 한다. 좋은 방법은 아니다.

  • yundream
  • 2017-05-03 08:39:04
  • 59676
  • tags:

Spark

Apache Spark는 빅데이터 처리에 사용되는 오픈 소스 분산 처리 시스템이다. 메모리 기반으로 바르게 작동하며, 배치처리, 스트리밍 분석, 머신러닝등 다양한 영역에서 사용한다.Spark는 RDD(Resilient distributed dataset)이라고 부르는 자료구조로 여러 노드에 분산 할 수 있는 분산 collection이다. 대량의 데이터를 처리하기 위해서 분산을 해야 할 건데, 메모리 상에서 어떻게 효율적으로 그리고 안전하게(fault tolerance) 데이터를 분산할 수 있을까를 생각하다가 튀어나온 데이터 모델이라고 보면 되겠다.

Docker Compose

Docker compose는 여러 컨테이너를 쉽게 실행 할 수 있도록 도와주는 도커 실행 툴이다. 이미지에서 컨테이너 하나 만들려면, 많은 옵션들을 설정해야 하는데, yaml 형식의 설정파일을 이용해서 여러개의 애플리케이션 서비스들을 효율적으로 관리 할 수 있다. 특히 Compose는 개발, 테스트, 스테이징 환경을 만드는데 많은 도움을 준다. Compose는 3 단계로 사용 할 수 있다. 1. 애플리케이션이 필요한 환경을 Dockerfile에 정의 한다.

Rancher

Rancher는 멀티 호스트에서 컨테이너를 실행하고 관리하기 위한 오픈소스 소프트웨어 플랫폼이다. Rancher를 이용하면 다른 오픈 소스 기술들을 "골 머리 써가면서" 조합할 필요 없이 간단하게 컨테이너 서비스 플랫폼을 만들 수 있다. Rancher는 4개의 주요 컴포넌트들로 구성된다. 많은 사용자들이 다양한 컨테이너 오케스트레이션 및 스케쥴링 프레임워크를 이용해서 컨테이너를 배치한다. Rancher는 Docker Swarm, Kubernets 및 Mesos를 포함한 인기 있는 컨테이너 오케스트레이션 프레임워크를 이용해서 컨테이너를 배포한다. 사용자는 여러 개의 스웜 또는 Kubernets 클러스터를 만들 수 있으며, 이들 오케스트레이션 프레임워크의 고유기능을 이용해서 응용 프로그램들을 관리 할 수 있다.