본문 바로가기

분류 전체보기95

Elasticsearch 개념 및 구조 이번 글에서는 그동안 사용해왔던 Elasticsearch의 개념 및 구조에 대한 정리를 해보고자 한다. 1. Elasticsearch 개념 1-1. 소개 Elasticsearch란 아파치 루씬(Lucene) 기반의 오픈소스 실시간 분산 검색 엔진으로 JSON 기반의 비정형 데이터 분산 검색 및 분석을 지원한다. 설치와 서버 확장이 매우 편리하며, 실시간 검색 서비스 지원, 분산 및 병렬처리, 그리고 멀티테넌시 기능을 제공하고 다양한 기능을 플러그인 형태로 구현하여 적용할 수 있는 것이 큰 특징이다. 또한 클러스터로 구성할 수 있기 때문에 검색 대상의 용량이 증가했을 때 대응하기가 매우 수월하다. Elasticsearch는 현재 웹 문서 검색, 소셜 데이터 분석, 쇼핑몰 검색 등에 활용되고 있으며, 빅데이.. 2020. 4. 1.
스프링부트에 log4j2 적용하기(gradle, log4j2.yml 활용) 이번 글에서는 스프링부트 서비스에서 gradle과 log4j2.yml 파일을 활용하여 log4j2 설정을 진행할 것이다. log4j2는 늘 사용하지만 한번 글로 정리가 필요할 것 같아서 정리해보았다. 설정을 진행하는 스프링부트 버전은 2.2.6 버전이며 gradle은 5.6 버전이다. log4j2 설정을 하기 위해서는 다음과 같은 파일을 수정해야 한다. build.gradle : gradle 설정파일 resources/application.yml : 스프링부트 서비스 설정파일 resources/log4j2.yml : log4j2 설정파일 1. build.gradle build.gradle파일 수정해보자. 두가지를 수정해줘야 하는데, 첫번째는 log4j2에 필요한 의존성을 추가해줘야하고(log4j2, ja.. 2020. 3. 29.
파일 디스크립터(File Descriptor) 란 무엇인가? 1. 개념 파일 디스크립터(File Descriptor)란 리눅스 혹은 유닉스 계열의 시스템에서 프로세스(process)가 파일(file)을 다룰 때 사용하는 개념으로, 프로세스에서 특정 파일에 접근할 때 사용하는 추상적인 값이다. 파일 디스크럽터는 일반적으로 0이 아닌 정수값을 갖는다. 흔히 유닉스 시스템에서 모든 것을 파일이라고 한다. 일반적인 정규파일부터 디렉토리, 소켓, 파이프, 블록 디바이스, 케릭터 디바이스 등 모든 객체들을 파일로 관리한다. 유닉스 시스템에서 프로세스가 이 파일들을 접근할 때 파일 디스크립터라는 개념일 이용한다. 프로세스가 실행 중에 파일을 Open하면 커널은 해당 프로세스의 파일 디스크립터 숫자 중 사용하지 않는 가장 작은 값을 할당해준다. 그 다음 프로세스가 열려있는 파일.. 2020. 3. 25.
AWS 쿠버네티스에 EFK(Elasticsearch, Fluentd, Kibana) STACK 구축하기 이번 글에서는 AWS 쿠버네티스 클러스터를 모니터링하기 위해 EFK(Elasticsearch + Fluentd + Kibana) STACK을 구축해보도록 하겠다. 우선 Elasticsearch와 Kibana는 AWS EC2 인스턴스에 설치할 것이고(클러스터 구성이 아닌 단일 인스턴스에 구성할 것이다), Fluentd는 쿠버네티스 클러스터에 Pod로 띄워 로그를 수집하도록 하겠다. 만약 Fluentd와 Elasticsearch, Kibana를 모두 쿠버네티스 Pod로 띄우고 싶다면 다음 글을 참고하길 바란다(AWS EKS에서 로그 트레이싱 환경 구축하기(1) - EFK 스택 구성하기). 이번 글에서 구축하는 EFK STACK 구성도는 다음과 같다. 이 글은 다음과 같은 순서로 진행된다. 1. EFK(Ela.. 2020. 3. 24.
AWS CodePipeline에 Slack 알람 적용(Lambda, CloudWatch Events 연동) 이번 글에서는 CI/CD 파이프라인(CodePipeline)과 Slack 알람을 연동하는 방법에 대해서 알아볼 것이다. CodePipeline(CodeCommit & CodeBuild) 시작/종료(성공/실패) 시 Amazon CloudWatch Events에서 해당 이벤트를 감지한 후 AWS Lambda로 트리거 신호를 보내면 AWS Lambda에서 Slack채널로 알람을 보내는 프로세스다. 글의 순서는 다음과 같다. Amazon CloudWatch Events, AWS Lambda란? 실습 전 준비사항 Slack Webhook 생성 AWS Lambda 함수 생성 AWS CloudWatch Events 생성 테스트 위와 같은 방식으로 구축을 하면 최종 프로세스는 다음 그림과 같다 (우리가 이 글에서 진행.. 2020. 3. 18.
AWS kops 쿠버네티스 클러스터에 Ingress 적용하기 이번 글에서는 AWS에 kops로 구축한 쿠버네티스 클러스터에 Ingress를 적용하는 방법에 대해 알아볼 것이다. 글의 순서는 다음과 같다. Ingress란 무엇인가? 실습 전 준비사항 쿠버네티스 클러스터에 Ingress 적용하기 Ingress 테스트 1. Ingress란 무엇인가? 쿠버네티스 Ingress란 HTTP(S) 기반의 L7 로드밸런싱 기능을 제공하는 컴포넌트이다. Ingress는 외부에서 쿠버네티스 내부로 들어오는 네트워크 요청을 어떻게 처리할지 결정하며, 쉽게 말해 외부에서 쿠버네티스에서 실행중인 Deployment와 Service에 접근하기 위한 관문과 같은 역할을 담당한다. 쿠버네티스 서비스는 기본적으로 L4 레이어로 TCP 단에서 Pod를 로드밸런싱한다. 그런데 MSA(마이크로 서비.. 2020. 3. 8.
AWS kops 쿠버네티스 클러스터에 CI/CD 파이프라인(Pipeline) 만들기(CodeCommit, CodeBuild 활용) 이번 글에서는 kops로 구축한 AWS 쿠버네티스 클러스터에 AWS CodeCommit, AWS CodeBuild, AWS CodePipeline, AWS ECR을 활용하여 CI/CD 파이프라인(Pipeline)을 만들어보도록 하겠다. 이 글의 순서는 다음과 같다. 실습 전 준비사항 CI/CD 파이프라인 만들기 CI/CD 파이프라인 테스트 1. 실습 전 준비사항 CI/CD 파이프라인 실습을 하기 위해서는 사전에 AWS에서 kops를 활용해서 쿠버네티스 클러스터 구축이 필요하다.(https://twofootdog.tistory.com/43 참고) 2. CI/CD 파이프라인 만들기 그럼 본격적으로 CI/CD Pipeline을 만들어보도록 하자. 우선 CI/CD Pipeline을 만드는 순서는 다음과 같다. .. 2020. 3. 6.