728x90
반응형

2023/01 5

외부 서비스 연동 시 비동기 처리에 대해서

외부 서비스 연동 시 발생할 수 있는 상황 외부 서비스와 연동 시 외부 서비스에 대한 요청이나 응답에 지연이 생길 경우 운영하는 서비스의 전체적인 성능에 영향이 생기게 된다. 이 때 클라이언트의 요청 많아질 경우 서버에서는 해당 요청들에 대해 대기하는 상황이 발생하게 된다. 그렇게 되면 클라이언트는 응답이 빠르게 오지 않아 재요청을 발생시킬 수 있고 그렇다면 더 많은 대기가 발생할 수 있다. 외부 서비스 연동 결과를 즉각적으로 처리해야 하는가? 예를 들어 로그인을 하면 포인트를 적립하는 요구사항이 있다면, 로그인 로직에서 외부 포인트를 적립하는 서비스를 호출한다. 이후 로그인에 성공한 뒤 수 초 이내 포인트를 적립하는 서비스를 호출한다. 다른 예로 주문을 취소하면 푸시알림을 발송하는 요구사항이 있다. 주..

마이크로서비스 5개 배포 원칙

마이크로서비스 5개 배포 원칙 실행 격리 Isolated execution 부하가 발생하거나 배포를 할 때 마이크로서비스 간에 영향을 주면 안된다. 예를 들어 하나의 호스트에서 여러 마이크로서비스를 실행하게 되면 어떠한 서비스의 부하가 증가하게 되는 순간 다른 마이크로서비스들이 다 같이 성능이 저하되거나 혹은 마이크로서비스 배포를 위해서 리눅스 os 설정 등을 변경하게 되면 다른 마이크로서비스 배포에 영향을 준다거나 이런 상태를 해결하기 위해 마이크로서비스는 서로 격리된 환경에서 실행되어야 한다. 가상화 기술, 컨테이너, FaaS 등을 사용하면 격리가 쉬워진다. 물리적 장비를 사용하면 강하게 격리를 할 수 있고, 컨테이너를 사용하면 상대적으로 빠르게 격리를 할 수 있다. 자동화에 초점 Focus on a..

IT/아키텍처 2023.01.26

마이크로서비스 핵심 개념

마이크로서비스 6가지 핵심 개념 독립적 배포 핵심 개념 중에 한 가지만 골라야 한다면 '독립적 배포' 가 가장 중요하다. 다른 마이크로서비스를 변경/배포하지 않으면서, 마이크로서비스를 변경, 배포, 출시할 수 있어야한다. 이를 위해 마이크로서비스 간에 결합도를 낮춰야 한다. 즉 서비스 간에 명시적이고, 잘 정의되어 있고 안정적인 API 명세가 필요하다. 비즈니스 도메인을 중심으로 모델링 도메인을 기준으로 서비스 경계를 정의한다. 즉, 하나의 마이크로서비스가 특정 기능에 필요한 전체를 구현한다. 이렇게 되면 새 기능을 출시하는게 쉬워진다. 여러 마이크로서비스의 기능을 조합해서 새로운 기능을 구현하는게 쉬워진다. 한 기능이 여러 마이크로서비스에 걸쳐 있으면 기능을 출시하는 비용이 올라간다. 서비스 간에 조율..

IT/아키텍처 2023.01.26

클린코드에 대해서

클린코드란? 깨끗한 코드는 한 가지를 제대로 한다. 깨끗한 코드는 절대로 설계자의 의도를 숨기지 않는다. 단순하고 직접적이다. 코드를 일으면서 짐작했던 기능을 각 루틴이 그대로 수행하는 코드이다. 중복 줄이고, 표현력 높인다. 즉, 사람이 이해하기 쉬운 코드를 만드는 것이다. 클린코드의 주요 원칙 코딩 표준, 아키텍처 표준 및 설계가이드를 준수하기 단순한 것이 효율적이다. 복잡함을 최소화하기 디자인 패턴 SOLID 원칙 Simple Responsibility Principle 하나의 클래스는 하나의 책임만 가져야 한다. Open/Close Principle 클래스는 확장에 대해 열려 있어야 하고, 변경에 대해서는 닫혀 있어야 한다. Liskov Substitution Principle 서브 클래스는 메인..

IT/코드 2023.01.20

Mysql 정규화, 인덱스, 트랜잭션, Lock, 동시성에 대해서

목차 대용량 데이터, 트래픽 처리에 대해 서버 개발자의 핵심은 데이터다. 대용량 시스템이 어려운 이유는 많은 양의 데이터에서 시작된다. 어떻게 많은 양의 데이터를 안정적으로 삽입, 갱신, 조회 할 것인가? 이 글에서는 대용량 시스템에 대한 전반적인 이해와 RDBMS 관점에서 대용량 데이터 처리를 위한 정규화, 인덱스, 트랜잭션, 동시성 제어 를 알아볼 것이다. 대용량 데이터, 트래픽 처리는 왜 어려울까? 여러 이유가 있겠지만, 몇 가지를 들어보면 핵심은 하나의 서버 또는 데이터베이스로 감당하기 힘든 부하 때문이다. 이로 인해 다수의 서버와 데이터베이스를 활용하게 되는데, 이를 마치 하나인 것처럼 동작하도록 하기 위해 여러 최적화 기법이나 기술들이 활용된다. 여러개의 서버에서 유입되는 데이터의 일관성을 보..

728x90
반응형