본문 바로가기
728x90

분류 전체보기86

Kafka 등장 배경 LinkedIn 데이터 처리 시스템의 한계 - 각 파이프 라인이 파편화되고 시스템 복잡도가 높은 경우 새로운 시스템을 확정하기 어려움 개선 목표 - 프로듀서와 컨슈머의 분리 - 영구적인 메시지 데이터를 여러 컨슈머에게 허용 - 스케일 아웃이 가능한 시스템 기존 메시징 시스템 - Publisher 와 Subscriber로 이루어진 비동기 메시징 전송 방식 - 메시지(데이터 단위)를 Publisher(Producer)에서 저장하면, Subscriber(Consumer)는 데이터를 수신 - 메시지는 수신자가 정해져 있지 않은 상태 - Subscibe된 수신자만이 정해진 메시지를 받음 장점 - 메시징 시스템만 살아 있으면 메시지가 유실되지 않음 - 확정성이 용이 단점 - 실시간 통신이 아니므로 메시지 sub여부.. 2022. 8. 20.
Factory Method 팩토리 메서드 패턴 > 구체적으로 어떤 것을 만들지 서브 클래스에서 정의하는 패턴 > 확장에 열려있고 변경에 닫혀있는 Open-Close Principle 원칙을 적용 OCP > 확장에 열려있다 : 새로운 기능을 확장할 수 있다. > 변경에 닫혀있다 : 기존 코드를 변경하지 않는다. 장점 - 확장에 열려있고 변경에 닫혀있는 객체지향 원칙을 적용하여 기존 코드를 건드리지 않고 확장이 가능하다. - 기존 코드가 복잡해질 일이 없음 단점 - 클래스가 늘어남 ex) Calendar.getInsrance() BeanFactory 2022. 4. 25.
인터페이스 메서드 * default 메서드 > 인터페이스에 기본 구현체를 만들 수 있음 > 그 인터페이스를 구현하는 클래스, 상속받은 다른 인터페이스도 해당 기능을 사용할 수 있음 public interface SampleInterface { default public Sample setDefault(ID id) { //기능 구현이 가능 } } * static 메서드 > 모든 인스턴스가 공유할 수 있는 static메소드를 인터페이스에서 관리할 수 있음 public interface SampleInterface { static public String getName (ID id) { //기능 구현이 가능 } default public Sample setDefault(ID id) { return new Person(getNa.. 2022. 4. 2.
Singleton 싱글톤 > 인스턴스를 오직 하나만 만들어 제공 > new 를 사용하지 않고 인스턴스를 생성해야함 > Runtime 등... ex) - double checked locking public class SingletonSample { private static volatile SingletonSample instance; private SingletonSample() {} //private로 생성자를 만드는 경우 밖에서 instance를 생성할 수 없음 public static SingletonSample getInstance(){ //해당 static 메서드를 사용해서 사용 가능 if(instance == null){ synchronized (SingletonSample.class){ if(instance.. 2022. 3. 26.
728x90