본문 바로가기

분류 전체보기

(54)
cloud 서버 내 kafka 환경 구성 로컬에서 kafka 테스트하지 않고 public cloud에서 kafka를 구성하고 싶은 학습자용 글이다. 운영에서의 설정은 훨씬 복잡하고, 보안에도 신경을 많이 써야 하므로, kafka를 단순히 사용해보고 싶은 학습자만 참고하길 바란다.클라우드는 ms azure를 활용하였고, 기본적인 kafka 설치는 완료되었다고 가정한다. 문제1. 방화벽 이슈클라우드에 배포한 카프카에 로컬 클라이언트가 접근하려면 로컬 ip에 대한 9092 포트 접근을 허용해주어야 한다. 문제2. Rebootstrapping 반복 이슈로컬 클라이언트에서 클라우드 public ip를 bootstrap server ip로 설정하고 테스트를 진행하면, kafka 설치 시 기본 설정을 건드리지 않았다는 가정 하에 다음과 같은 에러 메시지가 ..
GC(Garbage Collection) GC(Garbage Collection)GC(Garbage Collection)란?자바에서는 C계열의 언어와 달리 메모리 관리를 개발자가 직접 하지 않습니다. Garbage Collector가 사용되지 않는 메모리에 대한 참조를 자동으로 해제하여 메모리 공간을 확보합니다.자바에서는 버전 업그레이드를 하면서 GC 알고리즘도 같이 향상시켜왔습니다. 처리 성능을 높이고, 애플리케이션이 중단되는 시간을 최대한 줄이기 위해서입니다. GC의 대상이 되는 메모리 영역은 JVM의 메모리 구조에서 heap 영역인데, 자바가 처음 출시되었을 때 사용하던 mark-and-sweep 알고리즘 이후부터는 generational 개념과 동시성(concurrent) 기반으로 작동하고 있습니다. generational 기반 GC의 ..
개인정보 필드 암호화 대응기 들어가며최근에 금융권 특정 기관과 전용선으로 통신하던 환경에서, 개인정보 필드에 대한 암호화 요구사항을 받았다. 전용선을 사용할 때 네트워크 레벨에서 보안이 지켜진다면 특별히 필드 암호화를 할 필요는 없다는 것으로 정리하고 초기 프로세스를 구축했으나, 아마 기관 측 내부 감사 등의 사유로 정보보안 강화 차원에서 진행하려는 것으로 보였다.기존에 암복호화는 공통 모듈에서 제공하는 인터페이스를 통해 이루어져와서, 암복호화 모듈에 대한 협의는 해당 부서에서 진행하고, 단위 업무에서는 application 레벨에서의 도메인 로직에만 집중하면 되는 것으로 생각하였다. 하지만 기존 공통 모듈에서 제공하는 기능이 기관 측 암호화 요구사항을 충족하지 못하는 문제를 발견하였다. 기관 측 암호화 요구사항기관 측에서 요구하는..
Facade 패턴 Facade Patternstructural design pattern that provides a simplified interface to a library, a framework, or any other complex set of classesrefactoring.guruProblem라이브러리나 프레임워크를 이용해 코드를 작성한다고 해보자. 이런 경우 보통은 객체를 직접 초기화하고, 객체의 의존성을 직접 관리하고, 호출 순서까지 신경써야 한다.이렇게 되면 내가 작성하려고 하는 비즈니스 로직이 3rd party 라이브러리와 강하게 결합되게 되고, 코드릴 이해하거나 유지보수하기 어렵게 만든다.SolutionFacade 패턴은 많은 구성 요소를 가진 subsystem에 간단한 인터페이스를 제공하는 클래스..
Flyweight 패턴 Flyweight Patternfit more objects into the available amount of RAM by sharing common parts of state between multiple objects instead of keeping all of the data in each objectrefactoring.guruhead first design patterns 서적Problem인스턴스가 매우 많이 생성될 때, 인스턴스 생성 비용이 높은(하지만 모든 인스턴스가 공유하는 uniqueState) 필드가 있다면, 해당 필드는 공유하고 반복되는 state는 cache를 하면 메모리 절약 가능위 예시에서는 20KB를 차지하는 sprite는 공유하고, 반복적으로 생성되어 각 인스턴스에 할당되..
Observer 패턴 Observer Patternnotify multiple objects about any events that happen to the object they're observingrefactoring guruhead first design patterns 서적UMLPublishersubscribers 리스트를 갖고 있고, subscribe() / unsubscribe() 메서드를 통해 관리상태가 변경되면 subscribers 각각에 대해 변경된 상태를 알려주는 notifySubscribers() 메서드를 가짐SubscriberSubscriber interface는 Publisher가 notifySubscribers() 메서드에서 호출할 update() 메서드를 선언ConcreteSubscribersSub..
Decorator 패턴 Decoratorattach new behaviors to objects by placing these objects inside special wrapper objects that contain the behaviors.참고자료refactoring.guruhead first design patterns 서적UMLClient 여러 데코레이터로 wrapping하여 추가 작업(concrete decorator에서 정의한) 실행 가능Component > wrappers and wrapped objects를 위한 인터페이스나 추상 클래스Concrete Component 실제로 wrapped 되는 subclass로, 기본 기능에 해당Base Decorator > wrapping 시킬 object의 상위 인터페이스..
Strangler 패턴 Strangler Pattern이 글은 다음 글(Micro service architecture for the legacy codebase)을 번역하였습니다. 새로운 기능과 기능이 도입되면 application의 복잡성이 극적으로 증가하고 코드를 유지보수하거나 새로운 기능을 추가하는 것이 더 어려워집니다. 이러한 application은 Big Ball of Mud가 됩니다. 팀은 이렇게 복잡한 application을 유지보수하기 위해서 계속해서 노력해야 하고, 누군가는 새로운 기술이나 hosting, 아키텍쳐 패턴으로 대체할 것을 제안하게 됩니다. 그런데 전체 솔루션을 대체하는 것은 매우 어렵습니다.업계에서는 microservice, serverless architecture라는 유행어가 있어 왔습니다...