전체 글 198

OOP SOLID 원칙 간편 정리

단일책임원칙 single responsibility principle, SRP클래스와 모듈(Module)은 하나의 책임만 가지고 있어야 한다. 여기서 모듈은 하나의 역할을 위해 만들어진 클래스의 군집으로 이해하면 된다. 하나의 클래스는 하나의 역할을 해야 하며, 하나의 모듈 내에 있는 다수의 클래스들은 더 큰 하나의 역할을 처리하기 위한 기능들로 구성되어야 한다. 이 책임(역할)을 벗어나는 기능이나 로직이 클래스 또는 모듈 내에 있다면 클래스 설계 관점에서 클래스 또는 모듈의 분리 대상이 된다. 단일책임원칙에서 클래스 분해의 수준은 프로젝트의 규모나 복잡도에 따라 달라질 수 있다. 이 해석이 모호하다면 코드의 가독성, 확장성, 재사용성, 유지보수성을 판단해서 적정한 수준까지 설계하면 된다. 아래 암호..

Mocks Aren't Stubs - Martin Fowler 02 Jan 2007

https://martinfowler.com/articles/mocksArentStubs.html Mocks Aren't StubsExplaining the difference between Mock Objects and Stubs (together with other forms of Test Double). Also the difference between classical and mockist styles of unit testing.martinfowler.com  요약 비교표구분Mockist Style (Mock을 활용하는 TDD)Classical Style (전통적인 TDD)검증 대상행동 검증상태 검증검증 방식객체 간의 상호작용을 검증함.객체의 최종 상태를 검증함.초점시스템 간의 행동이 어떻게 연..

PROJECT REACTOR 소개

https://projectreactor.io/ 효율적인 반응형 시스템 만들기 리액티브 코어 완전 논-블로킹 함수형 인터페이스, CompletableFuture, Stream, Duration과 직접적인 상호작용 [Duration ???] 나 : Reactive Core 에서 duration이 어떤 특징인지 설명해 줘. GPT-4 : Reactive Core, 특히 Project Reactor에서 Duration의 사용은 반응형 프로그래밍에서 시간 기반의 연산을 수행할 때 핵심적인 역할을 합니다. Project Reactor는 비동기 데이터 스트림 처리를 위한 Java 라이브러리 중 하나로, Reactor Core는 이 라이브러리의 중심적인 부분입니다. Duration은 이러한 반응형 프로그래밍 패러다임..

쿠버네티스 서비스

서비스(Service) : 파드를 연결하고 외부에 노출 파드가 K8s 클러스터에 배포되면 쿠버네티스 네트워킹의 기본 규칙(쿠버네티스 네트워크 플러그인에 의해)에 의해 클러스터 내의 다른 파드와 직접 통신할 수 있다. 파드는 자발적, 비자발적으로 종료되고, 새로운 파드가 자동 생성될 수 있다. 이로인해 쿠버네티스 파드에 직접 IP를 부여하지 않는다. 대신 서비스를 통해 내구성 있는 IP(또는 도메인)와 포트를 쿠버네티스 클러스터에 할당하고, 서비스의 엔드포인트를 적절한 파드(Pods)에 자동으로 매핑하는 방식을 사용한다. 이것이 바로 서비스 API가 필요한 이유이다. kube-proxy 서비스가 클러스터의 각 노드에서 실행되어 iptables 규칙을 관리(조작)한다. 즉, kube-proxy가 서비스를 관..

Kubernetes 2024.02.19

성능 최적화 기법(성능 최적화 패턴)

DB 튜닝 데이터를 작게 만들 수 있는 테이블부터 drive 조건절 튜닝 범위 작게 -> 크게 index 분산 효율 좋은 것 우선 = 조건 Index 신규 생성, 변경, 머지 계산될 열 : indexed functional column indexed view 작은 처리로 각각 만들어서 마지막에 조합 denomalization : 반정규화 Partitioning - 특정 범위 조건으로 데이터가 사용되는 경우 (일단위, 주단위, 월단위 등) Deletion - 정기적인 데이터 삭제 캐싱 Global Cache - Redis 등 로컬 캐시 - mybatis, Encache, Caffeine 정적 콘텐츠 호스팅 CDN - Contents Delivery Network Static File 검색 엔진 엘라스틱서치 등

프로그래밍 2023.10.04