아키텍쳐 /대용량 아키텍쳐 41

대용량 웹서비스를 위한 마이크로 서비스 아키텍쳐의 이해

마이크로 서비스 아키텍쳐 (MSA의 이해)조대협(http://bcho.tistory.com) 배경 마이크로 서비스 아키텍쳐(이하 MSA)는 근래의 웹기반의 분산 시스템의 디자인에 많이 반영되고 있는 아키텍쳐 스타일로, 특정 사람이 정의한 아키텍쳐가 아니라, 분산 웹 시스템의 구조가 유사한 구조로 설계 되면서, 개념적으로만 존재하던 개념이다.얼마전 마틴파울러(Martin folwer)가 이에 대한 MSA에 대한 개념을 글로 정리하여, 개념을 정립 시키는데 일조를 하였다.이 글에서는 대규모 분산 웹시스템의 아키텍쳐 스타일로 주목 받고 있는 MSA에 대한 개념에 대해서 알아보도록 한다. 모노리틱 아키텍쳐(Monolithic Architecture) 마이크로 서비스 아키텍쳐를 이해하려면 먼저 모노리틱 아키텍쳐 ..

대용량 분산 시스템 아키텍쳐 디자인

대용량 분산 시스템 아키텍쳐 디자인 대용량 분산 시스템에 대한 아키텍쳐 설계에 대한 내용을 공유합니다. 아직 많이 부족합니다. 많은 피드백 부탁드립니다. 1. 아키텍쳐 설계 프로세스 대용량 분산 아키텍쳐 설계 #1 아키텍쳐 설계 방법론 from Terry Cho 2. 대용량 분산 시스템 아키텍쳐 대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴 from Terry Cho 3. 대용량 분산 시스템 아키텍쳐 디자인 패턴 대용량 분산 아키텍쳐 설계 #3 대용량 분산 시스템 아키텍쳐 from Terry Cho 4. 레퍼런스 아키텍쳐 - SOA 대용량 분산 아키텍쳐 설계 #4. soa 아키텍쳐 from Terry Cho 5. 레퍼런스 아키텍쳐 - REST 대용량 분산 아키텍쳐 설계 #5. ..

API 플랫폼에 대한 소개

API Platform조대협 근래에 들어서 모바일 애플리케이션의 발전과 SNS의 발전과 더불어서 Open API 에 대한 관심도가 급격하게 높아졌다. Open API란, API를 내부 사용자뿐만 아니라 외부 개발자에게까지 공개해서, 외부 개발자가 API를 이용해서 새로운 서비스를 만들도록 하는 모델이다. 근래에 들어서는 API만 전문적으로 개발 및 서비스를 해서 이를 통해서 수익을 창줄하는 비지니스 모델까지 생겨나고 있다. 이런 배경으로 API 관리에 대한 중요성이 대두되었는데, API에 대한 쉬운 관리, 모니터링 및 유료화 그리고, API에 대한 편리한 사용법, 샘플 코드 및 메뉴얼 제공하는 시나리오가 필요하게 되었는데, 이를 하나의 플랫폼 형태로 묶어 놓은 것을 API 플랫폼이라고 한다.API 플랫폼..

REST API에 대한 보안

REST API 보안조대협REST API에 대한 보안에 대해서 알아보자. API 에 대한 보안은 인증, 메세지 암호화, 무결성 크게 3가지 관점에서 고민해볼 수 있다. 1) 인증인증은, REST API를 호출한 사람(클라이언트)가 적절한 사용자 인가를 판단해주는 것이다. 아무나 API를 호출하는 것이 아니라 인증을 받은 사람많이 API를 호출해주게 하는 것인데, 쉽게 생각하면 사용자의 id,passwd로 서비스에 로그인을 하는 개념을 생각할 수 있다.API Key 방식API에 대한 인증 방법은 몇가지가 있는데, 그 중에서 가장 기초적인 방법은 API Key를 이용하는 방법이다. API Key란, 특정 사용자만 알 수 있는 일종의 문자열이다. 현재 Amazon이 이 방식을 사용하고 있는데 API를 사용하고..

MySQL의 Auto Sharding 및 Data Replication Architecture

Auto-Sharding이번 MySQL의 Enhancement 중 재미있는 기능중의 하나가 Auto Sharding이라는 기능이다. Sharding에 대한 개념은 http://bcho.tistory.com/670 를 참고하면 되고.보통 Sharding이라 하면 Application 에서 작성해서 컨트롤해야 하기 때문에, 데이타 저장 용량을 늘릴 수 있을지 몰라도, 전체적으로 Application의 구현 복잡도를 올리는 문제가 있었다.이번 MySQL에서는 Auto-Sharding이라는 기능을 제공하는데, 요는 MySQL이 알아서 데이타를 여러 데이타 노드에 분산 저장함으로써 전체 저장 용량을 늘리고, 데이타를 분산 배치 함으로써, 처리 능력을 향상 시킬 수 있다. 위의 그림은 Auto-Sharding 아키..

MySQL Clustering 버전의 새로운 기능들

※ 본 문서는 MySQL Cluster 버전을 기준으로 한다. MySQL 배포 구조 MySQL 배포 구조는 다음과 같다. 크게 3가지 종류의 노드를 갖는다. ① MySQL Data Node : Data Node는 실제로 데이타를 저장하고, Query 등을 수행하는 역할을 한다. ② MySQL Application Node : 일종의 라우터 역할로, MySQL 클라이언트에 의해서 들어오는 request를 적절한 Data Node로 라우팅 한다. ③ MySQL Management Node : 전체 클러스터에 대한 관리 기능을 수행한다. 위의 그림과 같이 Application Node와 Data Node는 다수가 존재할 수 있다. Application Node는 실제로 데이타를 저장하지 않고 라우팅 하는 역할..

대용량 시스템을 위한 데이타베이스 아키텍쳐-Sharding & Query Off Loading

대용량 시스템을 위한 데이타베이스 아키텍쳐 Sharding & Query Off Loading RDBMS는 크게 request를 바로 처리하는 트렌젝션 처리용의 OLTP(On-Line Transaction Processing)성과, 데이타를 모아서 분석하고 리포팅하는 OLAP(On-Line Analytical Processing) 두가지로 분리된다. 여기서 설명하는 RDBMS는 OLTP성의 데이타 베이스 이다. RDBMS는 2차원 테이블 구조의 데이타를 KEY 값을 중심으로 여러개의 컬럼으로 저장되며, 저장된 각각의 로우(행)은 다른 테이블의 로우와 관계를 가질 수 있다. RDBMS를 이용한 설계를 하는데, 고려할만한 아키텍쳐는 성능 향상을 위한 Query Off Loading과, Sharding이라는 ..

소셜 시스템의 필수기술들..

소셜 시스템이라고 이름은 지었는데, 정의는 Google,FaceBook,Twitter들과 같이 B2C 서비스를 지향하면서 대용량 서비스를 제공하는 웹서비스 시스템을 정의한다. 이 시스템들은 기존의 J2EE나 APM (Apache PHP MySQL) 다음 세대의 기술셋을 사용하는데 특징적으로 - 오픈 소스를 많이 이용한다. - NoSQL을 이용한 대용량 데이타 저장 구조 - 분산 처리 아키텍쳐 등등이다. J2EE 시대에 Servlet/JSP + EJB + JDBC가 필수 기술이었고 J2EE 다음 시대인 오픈 소스 과도기에는 Spring + IBatis (or Hibernate) + Struts 가 필수 기술이었다면 다음은 무엇일까? 나름 여러 문건이나 트랜드들을 조사해본 결과 1. NoSQL - 대용량 데..