![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/JH4TB/btrk177cQzt/MK0KHvO8Teo20aQtwWruM0/img.png)
이번에는 Docker-Compose로 ELK(Elastic, Logstash, Kibana) 스택을 기반으로 하는 모니터링 서버를 구축하는 방법에 대해 정리해보도록 하겠습니다. 아래의 예제에서는 Docker와 Docker Compose가 사전에 설치되어있다고 가정하고 진행하도록 하겠습니다. 만약 Docker와 Docker Compose가 설치되어 있지 않다면 이 글을 참고해주세요. 1. Docker Compose로 ELK 구축 [ ELK 구축 ] 1. Docker Compose 설정 Clone 위의 버전은 기존의 Docker-Compose에서 X-Pack 라이센스를 basic으로 변경해두었다. 추가로 username, password 변경이 필요하다면 진행하도록 하자. git clone https://g..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bPSTCY/btrk18dSnXt/kj68FTW67cXsaSdsLFJfrk/img.png)
예전부터 Docker와 Docker Compose를 설치하기 위한 포스팅을 올리려고 했지만 미루다가 Docker Compose로 ELK 구축 관련하는 포스팅을 작성하기 위해 Docker 설치 관련 내용을 작성하게 되었습니다. Docker에 대한 설명은 제외하고 설치하는 방법들과 명령어 위주로 살펴보도록 하겠습니다. 물론 해당 내용은 Docker의 공식 문서를 참고하는게 가장 좋습니다. 1. Docker와 Docker Compose 설치 [ Docker 설치 ] Docker를 설치하는 방법들이 여러 개 있지만 이번에는 간편한 설치 스크립트를 통해 Docker를 설치하도록 하겠습니다. 1. Docker 설치 스크립트 다운 curl -fsSL https://get.docker.com -o get-docker...
프로그래밍을 하다보면 추상화를 이용하고, 응집도가 높고 결합도는 낮은 애플리케이션을 개발해야 한다는 얘기를 많이 듣습니다. 그래서 이번에는 객체 지향 프로그래밍의 핵심 특징들인 캡슐화, 응집도, 결합도에 대해 알아보고자 합니다. 아래의 내용들은 클린 코드, 오브젝트 등에서 참고한 내용들이 많이 있습니다. 1. 캡슐화(Encapsulation) [ 캡슐화(Encapsulation) ] 객체지향 프로그래밍이 강력한 이유는 요구사항이 새롭게 추가되거나 바뀌어도 변경이 전파되지 않도록 막을 수 있는 장치들을 제공하기 때문이다. 그리고 이를 위한 대표적인 장치 중 하나가 캡슐화이다. 캡슐화를 이해하기 위해서는 퍼블릭 인터페이스와 구현에 대해 알아야 한다. 객체의 행동은 크게 퍼블릭 인터페이스(public Inte..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/cgWOqH/btrjHUA2RyR/AvHKl9eXnkvppp8EPHdyrk/img.png)
이번에는 객체 지향 프로그래밍의 5가지 핵심 원칙인 SOLID에 대해 알아보고자 합니다. 실제로 애플리케이션을 개발할 때 어떻게 적용할 수 있을지 구체적인 예시를 들어 살펴보고자 합니다. 아래의 내용들은 클린 아키텍처, 오브젝트 등에서 참고한 내용들이 많이 있습니다. 1. 객체지향 프로그래밍의 5가지 설계 원칙, SOLID SOLID란 객체 지향 프로그래밍을 하면서 지켜야하는 5대 원칙으로 각각 SRP(단일 책임 원칙), OCP(개방-폐쇄 원칙), LSP(리스코프 치환 원칙), DIP(의존 역전 원칙), ISP(인터페이스 분리 원칙)의 앞글자를 따서 만들어졌다. SOLID 원칙을 철저히 지키면 시간이 지나도 변경이 용이하고, 유지보수와 확장이 쉬운 소프트웨어를 개발하는데 도움이 되는 것으로 알려져있다. ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/cWcL12/btrhOAEsPgL/6lXGZkhCOAJUZ9NBC8aJwk/img.png)
아래의 내용은 오브젝트(Object)를 읽으면서 정리한 내용입니다. Java에 한정되는 이야기이므로 다른 언어에는 적용되지 않을 수 있습니다. 1. 상속을 이용한 다형성과 메소드 오버라이딩/ 메소드 오버로딩 [ Self 참조(Self Reference) ] Java에서 객체가 메세지를 수신하면 컴파일러는 self 참조(Self Reference)를 임시로 자동 생성하여 메세지를 수신한 객체를 가리키도록 설정하고 상속 계층의 역방향으로 동적 메소드 탐색을 진행하는데, 이 과정을 순서대로 정리하면 다음과 같다. 컴파일러가 메세지를 수신한 객체를 가리키는 self 참조를 임시로 생성한다. 클래스에서 메세지를 처리할 메소드를 탐색한다. 메세지를 처리할 수 없으면 부모 계층으로 넘어가 메소드 탐색을 진행한다. 3..