객체지향 프로그래밍에서 코드를 재사용하기 위한 방법으로 크게 상속과 합성이 있습니다. 대부분의 경우 상속보다 합성을 이용하는 것이 좋은데, 이번에는 왜 합성을 사용해야 하는지에 대해 알아보도록 하겠습니다. 아래의 내용은 클린코드, 이펙티브 자바, 오브젝트 등을 참고하여 작성하였습니다. 1. 상속(Inheritance)과 합성(Composition) 개발을 할 때 가장 신경써야 하는 것 중 하나가 중복을 제거하여 변경을 쉽게 만드는 것이다. 객체지향 프로그래밍의 장점 중 하나는 코드를 재사용하여 중복을 제거하기에 용이하다는 것인데, 이를 위한 방법에는 크게 상속과 합성 두 가지가 있다. [ 상속(Inheritance) 이란? ] 상속은 상위 클래스에 중복 로직을 구현해두고 이를 물려받아 코드를 재사용하는 ..
우리가 알고있는 스프링의 애플리케이션 컨텍스트에는 다양한 구현체들이 존재하는데, 이번에는 어떠한 구현체들이 있는지 살펴보도록 하겠습니다. 아래의 내용은 토비의 스프링을 참고하여 정리한 내용입니다. 1. 빈 설정 메타정보(BeanDefinition)와 다양한 종류의 Spring Application Context(스프링 애플리케이션 컨텍스트) [ 빈 설정 메타정보(BeanDefinition) ] Spring과 관련된 설정을 하기 위한 방법으로는 XML과 Java로 하는 2가지 방법이 있고, 두 가지 방식을 혼용하여 사용하는 것 역시 가능하다. 그러한 이유는 Spring이 설정 메타정보를 BeanDefinition 인터페이스를 통해 관리하기 때문이다. Spring Application Context(스프링 ..
이번에는 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..
예전부터 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..