반응형

분류 전체보기 233

채팅 서버 만들기 - (1) 설계

채팅 서비스에 관심이 있어 구현하던 중 마주하게된 문제들에 대한 해결방법을 공유하고자 글을 작성한다. 카카오톡 채팅 서비스와 같은 서비스를 구현해보고 싶었는데, 구조를 어떻게 설계하는 것이 좋을까 생각해보았다. 우선 단일 서버 방식이다. 이 방식은 간단하게 클라이언트와의 연결을 서버의 메모리에 map 형태로 클라이언트의 key로 구분하여 저장한 뒤 이를 이용하여 원하는 클라이언트에게 메세지를 전달하는 방식이다. 구현은 간단하지만 이 방식은 단점이 있다. 요즘은 GCP의 Cloud Run과 같은 컨테이너를 이용한 제품을 많이 이용하는데, 이러한 제품을 이용하면 여러 컨테이너가 실행되는 경우 각 컨테이너마다 메모리에 저장된 값이 달라져 원하는 서비스를 구현할 수 없게된다. 이를 해결하기 위한 방법 중 하나는..

카테고리 없음 2023.04.13

gRPC 알아보기

gRPC는 Google에서 개발한 RPC로 다음과 같은 특징을 가지고 있다. Protocol Buffers: gRPC는 JSON, XML과 다르게 Protocol buffer를 데이터 형식으로 사용한다. 태그로 이루어져 있어서 많은 크기를 차지하는 XML, 문자열 형태로 되어있는 JSON 이 아닌 더 작은 크기로 데이터를 직렬화하는 Protobuf로 데이터를 전달한다. HTTP/2: 양방향 스트리밍, 흐름 제어, 헤더 압축 등과 같은 다양한 기능을 지원하는 HTTP/2 프로토콜을 사용한다. Bi-Directional Streaming: gRPC는 양방향 스트리밍을 지원하여 채팅, 화상 회의와 같은 실시간 데이터 전송이 필요한 곳에도 사용 가능하다. Cross-Language Support: C++, Ja..

카테고리 없음 2023.02.01

GCP ACE 자격증 후기

GCP Associate Cloud Engineer 자격증 시험을 응시한 후기이다. 시험은 약 24시간 정도 투자를 한 것 같다. 2주 정도 계획을 했는데, 첫 주에는 하루에 2시간씩 14시간 정도를 투자하고, 시험 치는 주에는 일이 바빠서 못하다가 시험 당일 10시간을 투자했다. 기존에 cloudskillsboost를 이용하여 약 40개의 배지를 따면서 공부를 한 것도 있지만 examtopic에서 제공하는 덤프를 푸는 것이 도움이 많이 되었다. 첫 주에 100번까지 보고, 시험 당일에 101번부터 이어서 총 3 회독을 하고 시험에 응시했다. https://www.examtopics.com/exams/google/associate-cloud-engineer/view/ Associate Cloud Engi..

카테고리 없음 2023.01.15

도메인 주도 설계로 시작하는 마이크로서비스 개발 - 6장 사례 연구

6장에서는 도서 대출 시스템을 예시로 하여 마이크로서비스를 도출하고 아키텍처를 구성하는 것을 살펴본다. 6.1. 요구사항 정의 도서 대출 시스템은 다음 기능을 필요로 한다. 사용자 관리 및 로그인 사용자를 등록한다. 등록시 사내 HR 시스템에 의해 검증된다. 특정 사용자는 사서의 역할을 부여받는다. 사용자는 로그인하거나 로그아웃 할 수 있다. 도서 관리 사서는 도서분류 정보를 등록/수정/삭제한다. 사서는 입고된 도서를 분류하고 등록/수정/삭제한다. 일반적인 도서는 도서공급사에 의해 공급된다. 각 도서는 대출할 수 있는 재고가 있으며, 대출/반납에 의해 재고가 조정된다. 도서 대출 및 반납 사용자는 도서를 검색한다. 사용자는 베스트 대출 목록을 조회할 수 있다. 사용자는 재고가 있는 도서를 대출한다.(기간..

카테고리 없음 2022.12.19

도메인 주도 설계로 시작하는 마이크로서비스 개발 - 5장 마이크로서비스 설

마이크로서비스의 중요한 점은 기능적으로 응집도를 높이고, 타 서비스 간의 의존도를 낮추는 것이다. 이를 만족해야 마이크로서비스가 유연해진다. 5장은 응집도를 높이고, 의존도를 낮추는 것에 대한 내용이다. 5. 1. 마이크로서비스를 도출하는 방법 5. 1. 1. 비즈니스 능력에 근거한 도출 마이크로서비스를 도출하는 가장 쉬운 방법은 경험을 근거로 도출하는 것이다. 예를 들어 하나의 비즈니스를 다음과 같은 마이크로서비스들로 구분 할 수 있다. 이 방식은 대략적인 도출에는 유용하지만, 서비스 간의 관계 파악이나 해당 서비스의 구체적인 기능, 독립적인 데이터 식별에는 미흡하다. 5. 1. 2. DDD의 바운디드 컨텍스트 기반 도출 비즈니스 능력에 근거한 도출을 보완하기 위해 DDD의 전략적 설계를 적용할 수 있..

카테고리 없음 2022.12.07

도메인 주도 설계로 시작하는 마이크로서비스 개발 - 4장 마이크로서비스와 애자일 개발 프로세스

4. 마이크로서비스와 애자일 개발 프로세스 애자일 프로세스는 마이크로서비스와 가장 잘 맞는 프로세스이다. 지속적인 개선을 추구하는 애자일 방식이 가장 효과적이라고 많은 곳에서 언급이 되는데, 이는 국내의 현실과는 맞지 않는 부분이 존재한다. 애자일을 추구한다고 말하며 설계 없이 프로젝트 개발을 시작하는 것이 그러한데, 이러한 부분은 실제 애자일이 추구하는 것과는 맞지 않다. 애자일은 설계가 필요 없는 것이 아닌, 산출물을 최소화하는 것이라고 볼 수 있다. 4. 1. 도메인 주도 설계와 마이크로서비스 DDD는 마이크로서비스의 설계와 개발을 위한 주요 가이드로 사용되고 있다. 다음 내용들을 통해 DDD, 애자일을 이용한 MSA를 설명한다. 4. 2. 기민한 설계/개발 프로세스 4. 2. 1. 점진/반복적인 ..

카테고리 없음 2022.12.01

도메인 주도 설계로 시작하는 마이크로서비스 개발 - 3장 마이크로서비스 애플리케이션 아키텍처

3. 마이크로서비스 애플리케이션 아키텍처 3장은 MSA 내부 아키텍처에 대한 내용이다. 실무에서 단기간의 프로젝트에서 설계에 신경 쓰지 않고, 기능 구현에만 몰두하면 이후 유지보수가 매우 힘들어지게 된다. 초기 단계에서의 시스템 설계는 매우 중요한데 이번 장에서는 MSA 내부 아키텍처에 대해 다룬다. 3. 1. 비즈니스 로직은 어디에? - 관심사의 분리 유연하고 확장성 있는 MSA 시스템을 위해서는 마이크로서비스의 내부 구조를 잘 만드는 것도 중요하다. 애플리케이션의 유지보수성을 높이기 위해서는 개인에 의존하기보다는 누구라도 유지보수를 할 수 있게 만들어야 한다. 모든 로직을 SQL 문으로 처리하기보다는 코드로 비즈니스 로직을 구현하는 것을 고려해야 한다. 그러나 실무에서 기능을 개선하면서 Go로 구현된..

카테고리 없음 2022.11.25
반응형