From 0b8d8d83a0db7b2bb63ccd10487ad37a766093de Mon Sep 17 00:00:00 2001 From: YonghoChoi Date: Sun, 28 May 2017 16:15:02 +0900 Subject: [PATCH] =?UTF-8?q?=EA=B0=9C=EB=B0=9C=20=EB=85=B8=ED=8A=B8=20?= =?UTF-8?q?=ED=8C=8C=EC=9D=BC=20=EC=A0=95=EB=A6=AC,=20=EB=9E=8C=EB=8B=A4?= =?UTF-8?q?=20=EC=95=84=ED=82=A4=ED=85=8D=EC=B3=90=20=EB=82=B4=EC=9A=A9=20?= =?UTF-8?q?=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...e_\354\204\234\353\271\204\354\212\244.md" | 1 + md/{ => Etc}/Thrift.md | 0 md/{ => Java}/logging.md | 0 .../jenkins_build_history_cleanup.md | 0 md/{ => Linux}/linux-command.md | 0 md/Redis+Logstash.md | 7 - md/{ => Security}/nginx ssl.md | 0 md/{ => Security}/ssl.md | 0 md/{ => aws}/aws_ecr_login.md | 0 ...64\355\212\270\354\233\250\354\235\264.md" | 17 ++ md/bigdata/images/lambda_architecture_2.png | Bin 0 -> 21304 bytes md/bigdata/images/lambda_architecture_3.png | Bin 0 -> 6535 bytes md/bigdata/images/lambda_architecture_4.png | Bin 0 -> 14951 bytes md/bigdata/images/lambda_architecture_5.png | Bin 0 -> 22451 bytes md/bigdata/images/lambda_architecture_6.png | Bin 0 -> 27583 bytes md/bigdata/images/lambda_architecture_7.png | Bin 0 -> 37242 bytes ...04\355\202\244\355\205\215\354\262\230.md" | 168 ++++++++++++++++++ md/nginx ssl (1).md | 144 --------------- ...67\353\217\231\352\270\260\355\231\224.md" | 0 19 files changed, 186 insertions(+), 151 deletions(-) rename md/{ => Etc}/Thrift.md (100%) rename md/{ => Java}/logging.md (100%) rename md/{ => Jenkins}/jenkins_build_history_cleanup.md (100%) rename md/{ => Linux}/linux-command.md (100%) delete mode 100644 md/Redis+Logstash.md rename md/{ => Security}/nginx ssl.md (100%) rename md/{ => Security}/ssl.md (100%) rename md/{ => aws}/aws_ecr_login.md (100%) create mode 100644 "md/aws/\354\235\270\355\204\260\353\204\267 \352\262\214\354\235\264\355\212\270\354\233\250\354\235\264.md" create mode 100644 md/bigdata/images/lambda_architecture_2.png create mode 100644 md/bigdata/images/lambda_architecture_3.png create mode 100644 md/bigdata/images/lambda_architecture_4.png create mode 100644 md/bigdata/images/lambda_architecture_5.png create mode 100644 md/bigdata/images/lambda_architecture_6.png create mode 100644 md/bigdata/images/lambda_architecture_7.png create mode 100644 "md/bigdata/\353\236\214\353\213\244_\354\225\204\355\202\244\355\205\215\354\262\230.md" delete mode 100644 md/nginx ssl (1).md rename "md/\355\214\250\355\202\267\353\217\231\352\270\260\355\231\224.md" => "md/tcp/\355\214\250\355\202\267\353\217\231\352\270\260\355\231\224.md" (100%) diff --git "a/md/Docker/AWS\354\227\220\354\204\234_swarm\354\235\204_\354\202\254\354\232\251\355\225\230\354\227\254_Hive_\354\204\234\353\271\204\354\212\244.md" "b/md/Docker/AWS\354\227\220\354\204\234_swarm\354\235\204_\354\202\254\354\232\251\355\225\230\354\227\254_Hive_\354\204\234\353\271\204\354\212\244.md" index 199cf83..7a6e30e 100644 --- "a/md/Docker/AWS\354\227\220\354\204\234_swarm\354\235\204_\354\202\254\354\232\251\355\225\230\354\227\254_Hive_\354\204\234\353\271\204\354\212\244.md" +++ "b/md/Docker/AWS\354\227\220\354\204\234_swarm\354\235\204_\354\202\254\354\232\251\355\225\230\354\227\254_Hive_\354\204\234\353\271\204\354\212\244.md" @@ -130,6 +130,7 @@ * 이미지 업데이트 과정 jenkins로 자동화 * EC2 인스턴스 terminate 시 스크립트 실행 가능 여부 검토 * linux의 shutdown 시 script 실행으로 찾아보는 것이 나을 듯 +* swarm에서 볼륨 지정하여 사용하는 방법 숙지 diff --git a/md/Thrift.md b/md/Etc/Thrift.md similarity index 100% rename from md/Thrift.md rename to md/Etc/Thrift.md diff --git a/md/logging.md b/md/Java/logging.md similarity index 100% rename from md/logging.md rename to md/Java/logging.md diff --git a/md/jenkins_build_history_cleanup.md b/md/Jenkins/jenkins_build_history_cleanup.md similarity index 100% rename from md/jenkins_build_history_cleanup.md rename to md/Jenkins/jenkins_build_history_cleanup.md diff --git a/md/linux-command.md b/md/Linux/linux-command.md similarity index 100% rename from md/linux-command.md rename to md/Linux/linux-command.md diff --git a/md/Redis+Logstash.md b/md/Redis+Logstash.md deleted file mode 100644 index 8545b1f..0000000 --- a/md/Redis+Logstash.md +++ /dev/null @@ -1,7 +0,0 @@ -# Redis + Logstash - -## 참고 - -* [Logstash에는 Redis면 충분합니다](https://www.elastic.co/kr/blog/just_enough_redis_for_logstash) -* ​ - diff --git a/md/nginx ssl.md b/md/Security/nginx ssl.md similarity index 100% rename from md/nginx ssl.md rename to md/Security/nginx ssl.md diff --git a/md/ssl.md b/md/Security/ssl.md similarity index 100% rename from md/ssl.md rename to md/Security/ssl.md diff --git a/md/aws_ecr_login.md b/md/aws/aws_ecr_login.md similarity index 100% rename from md/aws_ecr_login.md rename to md/aws/aws_ecr_login.md diff --git "a/md/aws/\354\235\270\355\204\260\353\204\267 \352\262\214\354\235\264\355\212\270\354\233\250\354\235\264.md" "b/md/aws/\354\235\270\355\204\260\353\204\267 \352\262\214\354\235\264\355\212\270\354\233\250\354\235\264.md" new file mode 100644 index 0000000..629e769 --- /dev/null +++ "b/md/aws/\354\235\270\355\204\260\353\204\267 \352\262\214\354\235\264\355\212\270\354\233\250\354\235\264.md" @@ -0,0 +1,17 @@ +## 인터넷 게이트웨이 + +- 수평 확장되고 가용성이 높은 중복 VPC 구성요소 +- VPC의 인스턴스와 인터넷 간에 통신을 할 수 있게 해줌. +- 네트워크 트래픽에 가용성 위험이나 대역폭 제약 조건이 발생하지 않음 + +### 목적 + +- 인터넷 라우팅 가능 트래픽에 대한 VPC 라우팅 테이블에 대상을 제공 +- 퍼블릭 Ipv4 주소가 배정된 인스턴스에 대해 NAT(네트워크 주소 변환)를 수행 + +### 인터넷 액세스 활성화 + +- VPC에 인터넷 게이트웨이 연결 +- 서브넷의 라우팅 테이블이 인터넷 게이트웨이를 가리키는지 확인 +- 서브넷 인스턴스에 전역적으로 고유한 IP 주소가 있는지 확인 +- 네트워크 액세스 제어 및 보안 그룹 규칙에서 적절한 트래픽이 인스턴스로, 그리고 인스턴스에서 흐르도록 허용되는지 확인 \ No newline at end of file diff --git a/md/bigdata/images/lambda_architecture_2.png b/md/bigdata/images/lambda_architecture_2.png new file mode 100644 index 0000000000000000000000000000000000000000..383b89acd56a8488979288bc4a15b6734747f766 GIT binary patch literal 21304 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 literal 0 HcmV?d00001 diff --git a/md/bigdata/images/lambda_architecture_3.png b/md/bigdata/images/lambda_architecture_3.png new file mode 100644 index 0000000000000000000000000000000000000000..b211d25430c2766f4ae02ced8879d96455ce2e3e GIT binary patch literal 6535 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 VqcI26i-5@F37x|Ib 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≺?F3p_X9uY7c(CK% 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 o-vTg?mi&K*=l^RS?G@LD$U9?1=e0N`OB$N&HU literal 0 HcmV?d00001 diff --git a/md/bigdata/images/lambda_architecture_6.png b/md/bigdata/images/lambda_architecture_6.png new file mode 100644 index 0000000000000000000000000000000000000000..89477b196b71a97b26008c45eb8a7f086771ad56 GIT binary patch literal 27583 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 literal 0 HcmV?d00001 diff --git a/md/bigdata/images/lambda_architecture_7.png b/md/bigdata/images/lambda_architecture_7.png new file mode 100644 index 0000000000000000000000000000000000000000..6efca05a688450a8ceb49c494e752f1c9ae1948c GIT binary patch literal 37242 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 literal 0 HcmV?d00001 diff --git "a/md/bigdata/\353\236\214\353\213\244_\354\225\204\355\202\244\355\205\215\354\262\230.md" "b/md/bigdata/\353\236\214\353\213\244_\354\225\204\355\202\244\355\205\215\354\262\230.md" new file mode 100644 index 0000000..7ecfe45 --- /dev/null +++ "b/md/bigdata/\353\236\214\353\213\244_\354\225\204\355\202\244\355\205\215\354\262\230.md" @@ -0,0 +1,168 @@ +# 람다 아키텍처 + +* 트위터에서 스트리밍 컴퓨팅을 담당했던 네이선 마츠에 의해 소개된 아키텍처 +* 실시간 분석을 지원하는 빅데이터 아키텍처 + + + +## 페이스북 같은 SNS 애플리케이션 + +* 모바일 애플리케이션이며 글쓰기, 읽기, 댓글 달기, 스크롤하기, 페이지 넘기기 등의 약 1000여 개의 사용자 이벤트가 있다고 가정 + +* 사용자 수는 대략 1억명 + +* 매일 각 사용자의 행동 패턴을 서버에 저장하여 일별로 사용자 이벤트의 개수를 통계로 추출 + +* 여기서 원하는 쿼리 결과는 각 이벤트별 모든 사용자의 이벤트 수행 횟수를 얻어오는 것이다. + +* 클라이언트 디바이스에 전달되는 데이터 + + * 사용자 : 홍길동 + + * 날짜 : 2017년 5월 27일 + + | 이벤트 종류 | 횟수 | + | ------ | ---- | + | 글쓰기 | 3 | + | 글읽기 | 10 | + | 댓글 달기 | 2 | + | ... | ... | + +* 이를 데이터베이스에 저장한다면 아래와 같은 컬럼으로 구성 + + | 날짜 | 사용자 | 글쓰기 | 글읽기 | 댓글 달기 | + | --------- | ---- | ---- | ---- | ----- | + | 2017.5.27 | 홍길동 | 3 | 10 | 2 | + | ... | ... | ... | ... | ... | + +* RDBM에 저장하고 쿼리를 통해 원하는 정보를 가져올 수 있다. + +* 하지만 이벤트가 늘어나 컬럼이 1000개가 되고 1억명이 사용하는 시스템이라면 원하는 정보를 가져오기 위해 많은 부하가 발생한다. + + * 하루에 최대 1000개 칼럼 짜리 1억개의 레코드가 생성 + * 한달이면 30억개의 레코드가 생성 + * 이러한 데이터를 쿼리를 통해 합을 계산하여 가져오면 수행시간이 너무 오래 걸리게 된다. + + + +### 배치 사용 + +* 전통적인 접근 방식으로 배치를 활용 + * 어떤 특정 시간에 계산을 미리 해 놓음 + * 데이터를 모아 놓았다가 밤마다 그 날짜의 사용자들의 이벤트들의 합을 매일 계산해놓은 테이블을 만들어둔다. +* 테이블을 매일 미리 만들어두면 1년분의 데이터라도 365행 밖에 되지 않기 때문에 속도 문제가 해결됨 + + + +### 실시간 데이터의 반영 + +#### 테이블 조인 + +* 배치 테이블을 사용하면 성능 문제는 해결되지만 배치 주기에 따라 최대 1일의 편차를 두게 된다. + + * 실시간 반영이 불가능 + +* 배치 테이블과 그 날의 데이터 테이블 두개를 같이 사용하는 것으로 해결 + + * 어제까지의 데이터는 일별 배치로 생성된 테이블을 사용하고 오늘 데이터 부분은 사용자별로 기록된 로그 테이블을 사용하여 두 테이블을 조인 + + * 오늘의 데이터 + + | 날짜 | 사용자 | 글쓰기 | 글읽기 | 댓글달기 | + | --------- | ---- | ---- | ---- | ---- | + | 2017.5.27 | 홍길동 | 3 | 10 | 2 | + | ... | ... | ... | ... | ... | + + * 어제까지 데이터 + + | 날짜 | 글쓰기 | 글읽기 | 댓글달기 | + | --------- | ---- | ---- | ---- | + | 2017.5.26 | 3 | 10 | 2 | + | ... | ... | ... | ... | + + + +#### 실시간 집계 테이블의 활용 + +* 하루에 쌓이는 데이터양이 많지 않다면 문제가 되지 않지만, 이 시나리오에서 처럼 하루에 쌓이는 데이터가 일 최대 1억건이 되는 경우에는 문제가 된다. + + * 오늘 쌓이는 데이터가 1억건인데 이를 조인을 수행하여 결과를 얻어낸다면 좋은 성능을 기대하기 어렵다. + * 배치는 매일 돌리되 오늘 데이터에 대한 통계 값을 실시간으로 업데이트하는 방법을 생각해 볼 수 있다. + +* 로그 서버를 두고, 클라이언트에서 받은 로그를 기존과 동일하게 원본 데이터 테이블에 계속 저장하고, 오늘 통계에 대한 실시간 집계 테이블에 개별 이벤트의 값을 계산해서 더해준다. + + ![](images/lambda_architecture_2.png) + + * 오늘 데이터를 위한 실시간 집계 테이블을 추가로 생성하여 오늘 쌓인 이벤트들의 합을 누적 + * 이렇게 하면 오늘 데이터에 대한 로그를 쿼리할 필요 없이 누적된 결과만 가져오면 된다. + +* 실시간 집계 테이블과 배치 테이블을 조인하여 빠르게 실시간 통계를 볼 수 있다. + + ![](images/lambda_architecture_3.png) + + + +## 람다 아키텍처 활용 + +* 데이터의 흐름 + + ![](images/lambda_architecture_4.png) + + 1. 배치 처리를 위해 로그 서버는 모든 로그 데이터를 저장소에 저장 + 2. 배치 처리 단계에서 일일 또는 일정한 시간을 주기로 배치 처리로 계산 후 배치 뷰(배치 테이블)를 만든다. + 3. 1과 동시에 로그 서버는 실시간 처리를 위해 실시간 처리 쪽으로도 데이터를 전송한다. + 4. 실시간 처리 단계에서 데이터를 실시간으로 집계하고 실시간 집계 테이블을 만든다. + 5. 이 두 개의 뷰를 합쳐서 통계를 만든다. + +* 배치 뷰는 배치로 돌때만 쓸 수 있고, 평상시에는 읽기만 가능 + + * 데이터가 변경되는 것을 막음 + +* 실시간 뷰는 실시간으로 데이터를 읽고 쓸 수 있는 시스템 사용 + +* 위 예제에서는 컬럼의 개수를 카운팅하는 정도의 간단한 시나리오를 예로 들었지만 실제 빅 데이터 분석에서는 단순 통계뿐만 아니라 복잡한 수식이나 다단계를 거쳐야 하는 데이터 파일의 가공이 필요하다. + + * 처리 계층에 프로그램을 이용하여 알고리즘을 삽입할 수 있어야 한다. + +* 람다 아키텍처에 대한 솔루션 매핑 + + ![](images/lambda_architecture_5.png) + + * 저장소는 대량의 데이터를 저비용으로 안정성 있게(유실 없게) 저장할 수 있는 것이 필요 + * 하둡의 HDFS + * 이러한 대량의 데이터를 배치로 처리 할 때 될 수 있으면 신속하게 복잡한 알고리즘을 적용해서 계산할 수 있는 계층이 필요 + * 하둡의 MR(Map & Reduce) + * 이렇게 계산 된 배치 데이터를 저장할 장소가 필요 + * 하둡의 HBase + * NoSQL + * 위 예와 같은 데이터를 저장하고 고속으로 액세스할 수 있도록 함. + * 실시간 처리는 복잡한 알고리즘으로 빠르게 데이터를 처리할 수 있는 솔루션이 필요 + * 대표적으로 Apache Storm + * 실시간 뷰를 위한 빠른 읽기와 쓰기를 지원해야 함 + * Redis와 같은 인메모리 기반의 NoSQL + + + +### 람다 아키텍처의 솔루션 조합 + +| 단계 | 솔루션 | +| ------ | ---------------------------------------- | +| 저장소 | HDFS, Amazon S3 | +| 배치 처리 | Map & Reduce | +| 배치 뷰 | HBase, Elephant DB, Apache Drill, Amazon RedShift, HP Vertica | +| 실시간 처리 | Storm, Spark | +| 실시간 뷰 | Redis, RDBMS | + + + +### 람다 아키텍처 계층(Layer)화 + +![](images/lambda_architecture_6.png) + +* **스피드 레이어** : 실시간 데이터를 처리하는 부분 +* **배치 레이어** : 배치 저장소와 배치 처리부분 + * 저장소에는 가공 전의 원본 데이터를 모두 저장 + * 데이터가 처리되고 나서도 저장소에 데이터를 삭제하지 않는다. + * 유실 되었을 때 복구가 가능해야함 + * 새로운 뷰를 제공하고자 할때 기존의 원본 데이터를 가지고 있으므로 새로운 뷰의 통계 분석이 가능 +* **서빙 레이어** : 배치에 의해서 처리된 요약 데이터를 제공하는 부분 \ No newline at end of file diff --git a/md/nginx ssl (1).md b/md/nginx ssl (1).md deleted file mode 100644 index 22cfb3c..0000000 --- a/md/nginx ssl (1).md +++ /dev/null @@ -1,144 +0,0 @@ -* nginx 설치 - - ```shell - $ apt-get install update - $ apt-get install nginx - ``` - -* /etc/nginx/sites-enabled/default 수정 - - ```shell - location / { - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header Host $http_host; - proxy_pass http://127.0.0.1:8080; - - try_files $uri $uri/ =404; - } - ``` - - * proxy_pass에 tomcat 서버 URL 설정 - -* nginx 재시작 - - ```shell - $ sudo service nginx restart - ``` - - - - - - - -* gcloud SDK 설치 - -* gcloud init 수행 - -* compute engine instance 정보 확인 - - ```shell - $ gcloud compute instances list - ``` - - ​ - -* gcloud compute copy-files 수행 - - ```shell - $ gcloud compute copy-files <복사할로컬파일> <계정명>@<인스턴스명>:<원격지경로> --zone - ``` - - ​ - -인증서 파일을 복사한 후 nginx 설정을 변경한다. - - - -```shell -server { - listen 80 default_server; - listen [::]:80 default_server ipv6only=on; - - # Make site accessible from http://localhost/ - server_name yongho-choi.com; - rewrite ^ https://$server_name$request_uri; -} - - -server { - listen 443; - server_name yongho-choi.com; - - root html; - index index.html index.htm; - - ssl on; - ssl_certificate <인증서 경로>/<파일명>.crt; - ssl_certificate_key <키 경로>/<키명>.key; - - ssl_session_timeout 5m; - - ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2; - ssl_ciphers "HIGH:!aNULL:!MD5 or HIGH:!aNULL:!MD5:!3DES"; - ssl_prefer_server_ciphers on; - - location / { - try_files $uri $uri/ =404; - } -} -``` - - - -설정 완료 후 nginx를 재시작하면 https로 리다이렉트 된다. - - - -* 정상 동작하는 nginx 설정 - - ``` - server { - listen 80; - - return 301 https://$host$request_uri; - } - - - # HTTPS server - # - server { - listen 443; - - ssl on; - ssl_certificate /home/yonghogcloud1/ssl/1_yongho-choi.com_bundle.crt; - ssl_certificate_key /home/yonghogcloud1/ssl/yongho1037.key; - - ssl_session_timeout 5m; - - ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2; - ssl_ciphers "HIGH:!aNULL:!MD5 or HIGH:!aNULL:!MD5:!3DES"; - ssl_prefer_server_ciphers on; - - location / { - proxy_redirect off; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header Host $http_host; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Forwarded-Proto $scheme; - proxy_pass http://172.18.0.2:8080; - - } - - location ~ /\.ht { - deny all; - } - } - ``` - - ​ - - - -![]() - diff --git "a/md/\355\214\250\355\202\267\353\217\231\352\270\260\355\231\224.md" "b/md/tcp/\355\214\250\355\202\267\353\217\231\352\270\260\355\231\224.md" similarity index 100% rename from "md/\355\214\250\355\202\267\353\217\231\352\270\260\355\231\224.md" rename to "md/tcp/\355\214\250\355\202\267\353\217\231\352\270\260\355\231\224.md"