Song's Tech Blog

기술 블로그

DIP 의존성 역전 원칙

Clean Architecture - Item 11

DIP 의존성 역전 원칙객체 사이에 서로 도움을 받으면 의존 관계가 발생한다. 의존성 역전 원칙은 이러한 관계를 맺을 때 가이드 라인에 해당한다. DIP 는 한마디로 의존 관계를 맺을 때 변화하기 쉬운것, 또는 자주 변화하는 것 보다는 변화하기 어려운것, 거의 변화가 없는 것에 의존하라는 원칙이다. DIP가 말하는 유연성이 극대화된 시스템이란 소스 코......

OCP & LSP & ISP

Clean Architecture - Item 8, 9, 10

OCP : 개방 폐쇄 원칙 소프트웨어 개체는 확장에는 열려 있어야 하고, 변경에는 닫혀 있어야 한다. 즉, 기존의 코드를 변경하지 않으면서 기능을 추가할 수 있도록 설계가 되어야 한다는 의미이다. OPC는 시스템의 아키텍처를 떠받치는 원동력 중 하나다. OCP 의 목표를 달성하기 위해서는 시스템을 컴포넌트 단위로 분리하고, 저수준 컴포넌트에서 발......

SRP 단일책임원칙

Clean Architecture - Item 7

설계원칙좋은 소프트웨어 시스템은 깔끔한 코드(clean code)로 부터 시작한다. 좋은 코드로 좋은 아키텍처를 정의하는 원칙이 바로 SOLID다. SOLID 원칙은 함수와 데이터 구조를 클래스로 배치하는방법, 그리고 이들 클래스를 서로 결합하는 방법을 설명해준다. SOLID 원칙의 목적 변경에 유연하다. 이해하기 쉽다. 많은 소프트웨어 시스템에 사......

구조적 프로그래밍

Clean Architecture - Item 4

패러다임패러다임이란?프로그래밍 하는 방법을 말한다. 언어에 독립적이며 어떤 프로그래밍 구조를 사용할지, 언제 구조를 사용해야 하는지를 결정한다. 즉, 프로그래머에게 프로그래밍 관점을 제공해준다. 또한 패러다임은 무엇을 해야할지를 말하기 보다는 무엇을 해서는 안되는지를 말해준다. 1. 구조적 프로그래밍 (Structured Programming) 최초......

객체 지향 프로그래밍

Clean Architecture - Item 5

객체 지향 프로그래밍객체지향을 정의하는 요소겍체지향을 표현하는 많은 말들이 있다. 보통 “데이터와 함수의 조합”, “실제 세계를 모델링 하는 새로운 방법” 이라는 말을 들어봤을 것이다. 하지만 너무 모호하며 추상적이다.어떤 사람들은 “객체지향이란 캡슐화, 상속, 다형성 이 세가지 개념을 조합한 것이거나, 또는 최소한 세가지 요소를 반드시 지원해야 한다......

함수형 프로그래밍

Clean Architecture - Item 6

함수형 프로그래밍함수형 프로그래밍은 자료 처리를 수학적 함수의 계산으로 취급하고 상태와 가변 데이터를 멀리하는 프로그래밍 패러다임의 하나이다. 함수형 언어에서는 변수는 변경되지 않는다. 이것은 함수형 프로그래밍을 관통하는 중요한 법이다. 불변성과 아키텍처아키텍트는 항상 가변성을 염려해야 하는데 그 이유는,경합(race)조건, 교착상태(deadlo......

RabbitMQ (1)

RabbitMQ 란

1. RabbitMQ 란 MON(메시지 지향 미들웨어)메시지 지향 미들웨어(Meesage Oriented Middleware: MOM)은 비동기 메시지를 사용하는 다른 응용 프로그램 사이에서 데이터 송수신을 의미한다. MQMOM을 구현한 시스템이 메시지 큐(MessageQueue: MQ)이다.프로그래밍에서 MQ는 프로세스 또는 프로그램 인스턴스가 데이......

RabbitMQ (2)

RabbitMQ, 이럴때 사용하자

RabbitMQ, 이럴때 사용하자래거시 배송지연 처리 기능배송지연 처리 기능을 하는 시스템이 있다고 가정해보자. 배송 처리 과정은 위의 플로우대로 진행된다. 판매자가 배송 지연 요청을 했을 경우 실시간이 아닌 배송 지연 안내 배치를 수행하여 배송지연 메시지가 발송되게 된다. 여기서 기존 시스템의 대표적인 문제는 배송 지연 처리에서 복잡한 비지니스......

쿼리튜닝 팁

자잘한 팁

1. 복합인덱스 복합 인덱스 사용 시 equal 조건은 좌측으로 <>,between등 range 조건 혹은 order by, group by 조건은 우측으로 배치하자. 2. ppredicate pushdown outer query의 where 조건을 inner query로 밀어넣어 처리량을 줄이자. 3. limit 절 limit 절은 f......

세미조인

세미 조인으로 쿼리 튜닝하기

세미조인이란세미조인은 서브 쿼리와 메인 쿼리와의 연결처리를 위한 유사 조인 방식이다. 여기서는 1:n 관계에서 1:1처럼 조회될 경우, 쿼리 튜닝을 위한 방법으로 소개하도록 하겠다. 예제학생 테이블(student) 힉과 테이블(department) 다음의 두 테이블이 있다고 가정한다. 학생이 있는 학과의 리스트를 조회하는 예제를 살펴보자. In......