Data Engineering/Distributed System
-
분산 시스템 개요 데이터 엔지니어링하면 분산 시스템은 항상 나오는 주제이다. 그만큼 많은 소프트웨어에서 분산 시스템이 필요하다는 것인데, 그렇다면 분산 시스템이 필요한 이유는 무엇일까? 그것은 하드웨어 성능의 발전 속도로부터 나온다. '무어의 법칙'은 하드웨어 성능의 발전은 선형적이라는 것이다. 하지만 컴퓨터에서의 트래픽과 데이터는 기하 급수적으로 늘어났다. 이에 하드웨어를 scale-up이 아닌 scale-out 전략을 생각하게 된다. 상태를 공유하지 않으면 scale out이 쉽게 가능했지만 Database가 중요해지면서 대량의 데이터가 공유 가능해야했다. 따라서 Database를 중심으로 상태와 데이터가 공유 가능하면서 scale-out하여 많은 데이터와 트래픽이 처리 가능한 소프트웨어가 필요해졌다..
분산 시스템 이해하기 - BASE 원칙, CAP, PACELC분산 시스템 개요 데이터 엔지니어링하면 분산 시스템은 항상 나오는 주제이다. 그만큼 많은 소프트웨어에서 분산 시스템이 필요하다는 것인데, 그렇다면 분산 시스템이 필요한 이유는 무엇일까? 그것은 하드웨어 성능의 발전 속도로부터 나온다. '무어의 법칙'은 하드웨어 성능의 발전은 선형적이라는 것이다. 하지만 컴퓨터에서의 트래픽과 데이터는 기하 급수적으로 늘어났다. 이에 하드웨어를 scale-up이 아닌 scale-out 전략을 생각하게 된다. 상태를 공유하지 않으면 scale out이 쉽게 가능했지만 Database가 중요해지면서 대량의 데이터가 공유 가능해야했다. 따라서 Database를 중심으로 상태와 데이터가 공유 가능하면서 scale-out하여 많은 데이터와 트래픽이 처리 가능한 소프트웨어가 필요해졌다..
2024.01.03 -
Fluentd에서 필터링 후 전송하기!! 다시 서버1로 돌아와 Fluentd 필터링과 전송을 위한 세팅을 진행한다. 우선 Opensearch서버로 로그를 보내기 위해서 plugin 설치가 필요하다. sudo fluent-gem install fluent-plugin-opensearch 그리고 다시 fluent.conf 파일을 vi로 연다. 인풋에 대한 태그인 source 밑에 output 설정으로 위한 태그인 match를 아래처럼 추가한다. Opensearch의 index lifecycle을 시간으로 가져가기 때문에 log에 담긴 시간 값에 맞는 index로 전송할 수 있다. @type opensearch hosts $opensearch_server_ip:9200 logstash_format true l..
EFK(ELK) 구축 해보기!! (서버 로그 수집) - 5. Fluentd에서 필터링 & OpenSearch로 전송하기Fluentd에서 필터링 후 전송하기!! 다시 서버1로 돌아와 Fluentd 필터링과 전송을 위한 세팅을 진행한다. 우선 Opensearch서버로 로그를 보내기 위해서 plugin 설치가 필요하다. sudo fluent-gem install fluent-plugin-opensearch 그리고 다시 fluent.conf 파일을 vi로 연다. 인풋에 대한 태그인 source 밑에 output 설정으로 위한 태그인 match를 아래처럼 추가한다. Opensearch의 index lifecycle을 시간으로 가져가기 때문에 log에 담긴 시간 값에 맞는 index로 전송할 수 있다. @type opensearch hosts $opensearch_server_ip:9200 logstash_format true l..
2023.12.27 -
우선 Fluentd를 진행 중이선 서버1은 놔두고 서버2로 들어간다. Fluentd에서 OpenSearch로 로그를 보내려면 서버 2에 OpenSearch가 설치되어있어야 하기 때문에 서버2에 OpenSearch 설치와 함께 Dashboard까지 설치하려고 한다. 우선 두 번째 EC2 서버에 접속한다. 설치전 아래 사항을 확인해둔다. sudo apt update sudo apt install build-essential -y 아래에서 환경에 맞는 OpenSearch 파일을 다운받는다. https://opensearch.org/downloads.html Opensearch 2.11.1 opensearch.org wget으로 tar.gx파일을 다운받고 tar -xvf 로 해제하였다. opsearch-2.4...
EFK(ELK) 구축 해보기!! (서버 로그 수집) - 4. OpenSearch와 Open Dashboard 설치하기우선 Fluentd를 진행 중이선 서버1은 놔두고 서버2로 들어간다. Fluentd에서 OpenSearch로 로그를 보내려면 서버 2에 OpenSearch가 설치되어있어야 하기 때문에 서버2에 OpenSearch 설치와 함께 Dashboard까지 설치하려고 한다. 우선 두 번째 EC2 서버에 접속한다. 설치전 아래 사항을 확인해둔다. sudo apt update sudo apt install build-essential -y 아래에서 환경에 맞는 OpenSearch 파일을 다운받는다. https://opensearch.org/downloads.html Opensearch 2.11.1 opensearch.org wget으로 tar.gx파일을 다운받고 tar -xvf 로 해제하였다. opsearch-2.4...
2023.12.27 -
이번에는 실제로 EFK를 구축해보려고 한다. 아래는 계획한 기본적인 아키텍처이다. * 미리 ec2 서버 2대를 생성하였다. 1. Fluentd 설치하고 로그 확인 가장 먼저 App에서 만든 로그파일을 Fluentd가 파싱하고 이를 다른 서버에 있는 Opensearch에게 전송하는 것이다. *** 서버 1에서 진행 Fluentd 설치 이를 위해 Fluentd를 설치해야하는데 https://docs.fluentd.org/installation/before-install Before Installation - Fluentd Fluentd sometimes uses predictable paths for dumping, writing files, and so on. This default settings for..
EFK(ELK) 구축 해보기!! (서버 로그 수집) - 3. 로그 만들고 Fluentd로 로그 확인이번에는 실제로 EFK를 구축해보려고 한다. 아래는 계획한 기본적인 아키텍처이다. * 미리 ec2 서버 2대를 생성하였다. 1. Fluentd 설치하고 로그 확인 가장 먼저 App에서 만든 로그파일을 Fluentd가 파싱하고 이를 다른 서버에 있는 Opensearch에게 전송하는 것이다. *** 서버 1에서 진행 Fluentd 설치 이를 위해 Fluentd를 설치해야하는데 https://docs.fluentd.org/installation/before-install Before Installation - Fluentd Fluentd sometimes uses predictable paths for dumping, writing files, and so on. This default settings for..
2023.12.27 -
EFK(ELK) 구축 해보기!! (서버 로그 수집) - 2. EFK 소개와 아키텍처 EFK란 우선 EFK는 ElasticSearch, Fluentd, Kibana 의 앞자 글자만을 딴 것이다. 더 잘 알려진 ELK는 Elastic stack으로 구성되었으며, 여기서 L은 Logstash이다. Elastic stack의 유료화로 인해 ElasticSearch -> OpenSearch Fluentd Kibana -> OpenDashboard 를 사용한다. Fluentd Log를 수집, 파싱, 전송을 담당한다. App의 파일을 읽기 위해 App과 같은 호스트에 뜬다. Fluentd는 적은 리소스로 로그를 파싱&전송 규칙을 태그 방식으로 정한다. OpenSearch(ElasticSearch) Log를 저장하는 ..
EFK(ELK) 구축 해보기!! (서버 로그 수집) - 2. EFK 소개와 아키텍처EFK(ELK) 구축 해보기!! (서버 로그 수집) - 2. EFK 소개와 아키텍처 EFK란 우선 EFK는 ElasticSearch, Fluentd, Kibana 의 앞자 글자만을 딴 것이다. 더 잘 알려진 ELK는 Elastic stack으로 구성되었으며, 여기서 L은 Logstash이다. Elastic stack의 유료화로 인해 ElasticSearch -> OpenSearch Fluentd Kibana -> OpenDashboard 를 사용한다. Fluentd Log를 수집, 파싱, 전송을 담당한다. App의 파일을 읽기 위해 App과 같은 호스트에 뜬다. Fluentd는 적은 리소스로 로그를 파싱&전송 규칙을 태그 방식으로 정한다. OpenSearch(ElasticSearch) Log를 저장하는 ..
2023.12.27 -
로그 우선 로그란, 컴퓨터가 운행 도중에 남기는 유의미한 기록을 말한다. 로그에는 1) Timestamp 2) 로그 레벨 3) 로그 내용 4) 발생 위치 등이 일반적으로 들어간다. 로그는 파일을 남기지만 수집이 따로 필요한 이유는 1. 시스템에 장애가 나면 로그파일에 다시 접근할 수 없을 수 있다. 2. 관리해야하는 프로그램이나 인스턴스 수가 많아지면 개별적으로 확인하기 어렵다. 3. 필터링이나 검색 등을 이용해서 로그를 더욱 활용하여 시스템 신뢰도를 높일 수 있다. 로그 수집 아키텍처 환경에 따라서 다양하게 로그를 수집할 수 있다. 1. 파일을 이용한 수집 App이 만든 Log File을 별도의 Log Collector가 수집하고 전송한다. 장점으로는 1. 디자인 패턴에서 중요한 '관심사의 분리'가 이..
EFK(ELK) 구축 해보기!! (서버 로그 수집) - 1. 로그와 로그 수집 아키텍처로그 우선 로그란, 컴퓨터가 운행 도중에 남기는 유의미한 기록을 말한다. 로그에는 1) Timestamp 2) 로그 레벨 3) 로그 내용 4) 발생 위치 등이 일반적으로 들어간다. 로그는 파일을 남기지만 수집이 따로 필요한 이유는 1. 시스템에 장애가 나면 로그파일에 다시 접근할 수 없을 수 있다. 2. 관리해야하는 프로그램이나 인스턴스 수가 많아지면 개별적으로 확인하기 어렵다. 3. 필터링이나 검색 등을 이용해서 로그를 더욱 활용하여 시스템 신뢰도를 높일 수 있다. 로그 수집 아키텍처 환경에 따라서 다양하게 로그를 수집할 수 있다. 1. 파일을 이용한 수집 App이 만든 Log File을 별도의 Log Collector가 수집하고 전송한다. 장점으로는 1. 디자인 패턴에서 중요한 '관심사의 분리'가 이..
2023.12.27