본문 바로가기
728x90
반응형

전체 글82

객체지향 5원칙 - SOLID 서론 객체지향에는 5원칙이 있는데, Single Responsibility, Open Close, Liscov Substitution, Interface Segregation, Dependency Inversion(SOLID)이다. 코드를 통해 해당 원칙을 살펴보도록 하자. 단일 책임 원칙(Single Responsibility Principle) 클래스는 단 하나의 책임을 가져야 하며 어떤 클래스를 변경해야하는 이유는 오직 하나뿐이어야 한다. 속성, 메서드, 패키지, 모듈, 컴포넌트, 프레임워크 등에 적용 보안 클래스에서는 두 기능을 모두 가지고 있어 단일 책임 원칙을 위반하고 있다. // 단일 책임 원칙을 지키지 않았을 때 public class Authentication { private Strin.. 2024. 4. 1.
1. 리액티브 시스템과 리액티브 프로그래밍 & 2. 리액티브 스트림즈 개요 스프링으로 시작하는 리액티브 프로그래밍 책을 보고 정리하고자 해당 포스팅을 작성하고 있다.목차 별로 중요하다고 생각되는 부분, 개발할 때 기억해 두면 좋을 부분을 추려보고자 한다. 리액티브 시스템이란? 비동기 메시지 기반 통신으로, 클라이언트 요청에 즉각적으로 응답하여 지연 시간을 최소화하는 시스템. 설계원칙 빠른 응답성을 바탕으로 유지보수와 확장이 용이한 시스템 Means 주요 통신 수단으로 무엇을 사용할건지 표현 비동기 메시지 기반의 통신을 통해 구성요소 간의 느슨한 결합, 격리성, 위치 투명성 보장해야 함. 스레드가 요청에 대해 1:1로 매핑되지 않는다. Form 비동기 메시지 통신 기반 하에 탄력성과 회복성을 가지는 시스템이어야 함. 탄력성: 시스템 자원을 적절히 추가하거나 감소시켜 작업량의.. 2024. 3. 31.
[Kafka] 2. 토픽과 파티션 목적 아파치 카프카 애플리케이션 프로그래밍, 카프카 핵심 가이드, 카프카 데이터 플랫폼의 최강자, 그리고 카프카 관련 포스팅을 보고 정리했던 노트를 공유하기 위해 기록한다. 이전 포스팅 참조 2024.03.31 - [Message Queue] - [kafka] 1. kafka의 역사, 장점 [kafka] 1. kafka의 역사, 장점 목적 아파치 카프카 애플리케이션 프로그래밍, 카프카 핵심 가이드, 카프카 데이터 플랫폼의 최강자, 그리고 카프카 관련 포스팅을 보고 정리했던 노트를 공유하기 위해 기록한다. 카프카를 사 daewoony.tistory.com 토픽 카프카에서 데이터를 구분하기 위해 사용하는 논리적인 단위 1개 이상의 파티션을 소유함. 파티션 프로듀서가 보낸 데이터(레코드)들이 저장되는 물리적인.. 2024. 3. 31.
[kafka] 1. kafka의 역사, 장점 목적 아파치 카프카 애플리케이션 프로그래밍, 카프카 핵심 가이드, 카프카 데이터 플랫폼의 최강자, 그리고 카프카 관련 포스팅을 보고 정리했던 노트를 공유하기 위해 기록한다. 카프카를 사용하기 전에 kafka의 역사와 장점 등을 먼저 알면 좋을 것이라 판단하여 가장 먼저 기록한다. 역사 링크드 인에서 단방향 통신을 통해 데이터 생성하는 소스 애플리케이션 → 적재되는 타깃 애플리케이션 으로 연동하는 소스코드를 작성했다. 시간이 지날 수록 아키텍쳐가 거대해지면서 문제가 생기기 시작했다. ex) 타겟 애플리케이션에서 장애가 발생할 경우 해당 데이터를 생성하는 소스 애플리케이션 모두에 장애가 발생한다. (지속적인 데이터 전송 실패 재시도) → 따라서 이러한 파편화된 데이터 흐름을 개선하기 위해 카프카를 개발하였다.. 2024. 3. 31.
[kafka] kafka config 설정 목적 아래 프로젝트에 kafka를 붙이고자 할 때 어떻게 설정할지 공유하고자 한다. 1시간에 한번 실행. 사용자 상호작용 로깅이 아닌 원본 데이터를 가공한 데이터. 실시간으로 실행. 원본 데이터는 mysql에 저장되어있음. 브로커 replication.factor 데이터 유실 방지를 위해 3으로 적용 unclean.leader.election.enable ISR이 아닌 OSR을 가지고 있는 broker를 leader로 선출할 수 있도록 설정하는 옵션. true일 경우, 브로커가 모두 down 되었다가 OSR 상태의 브로커만 up 되었을 때, 데이터는 일부 유실하더라도 서비스할 수 있다. false일 경우, 데이터는 유실하지 않으나, producer, consumer의 요청을 받을 수 없어 서비스 불가하다.. 2024. 3. 31.
스프링 부트가 다중 유저 요청 처리하는 법 개요 기본 의존성 중 하나인 spring-boot-starter-web 모듈을 사용하면, 내장 톰캣을 사용하는 스프링 MVC 구조를 기반으로 동작한다. 일반적으로 하나의 프로세스에 하나의 스레드가 작업하는 것과 달리, 하나의 프로세스 내에서 여러 스레드가 동시에 작업을 수행하는 것이다. Spring boot에 내장된 tomcat를 비롯한 대부분의 웹서버는 멀티스레드를 통해, 모든 사용자가 자신이 원하는 작업을 원활히 할 수 있다. 그러나 요청하는 client 수가 많아지면 그만큼 thread 생성, 소멸 비용 및 오버헤드가 발생한다. 이와 같은 문제점을 해결하기 위해 스레드 풀을 사용한다. 서블릿 컨테이너인 tomcat에서 스레드 풀을 활용하여 다중 요청 처리해준다. 또한 tomcat은 NIO Conne.. 2024. 3. 31.
728x90
반응형