Development/Architecture

    Google Calendar API 분석 및 시스템 구축 전략

    들어서며 구글 캘린더는 전 세계적으로 널리 사용되는 캘린더 애플리케이션입니다. 그러다 보니 캘린더를 읽고 새로운 이벤트를 작성하는 데 이용할 수 있는 RESTful API인 Google Calendar API가 함께 제공되고 있습니다. 이번 글에서는 이러한 구글 캘린더 API의 주요 기능을 이해해보고, 관련된 시스템을 구축한다고 하였을 때 도움 될 만한 몇 가지 전략을 공유합니다. 유즈케이스 모든 팀원이 공통으로 가능한 시간을 찾아 회의 시간 후보를 제안하는 가상의 애플리케이션을 만든다고 생각해보겠습니다. 그러기 위해서는 모든 팀원이 각자의 구글 계정으로 로그인(OAuth)하고, 캘린더와 관련된 정보를 애플리케이션에 제공하겠다는 동의를 해야 합니다. 그 후에는 회의 시간 후보를 추천 받고 싶을 때마다 버..

    Webhooks(웹훅) 시스템 체크리스트

    들어서며 최근 Webhooks 시스템을 구성하기 위해 필요한 요소를 짤막하게 고민해볼 기회가 생겨, 그때 고민해본 내용을 공유해보고자 합니다. 많은 분들이 웹훅 시스템을 구성한다고 하면 애플리케이션 시스템 아키텍처보다는 인프라 측면의 보안적인 요소에 많은 관심을 가지실 것입니다. 그래서 이번 게시글도 보안에 대한 부분을 메인으로 다루어보겠습니다. 보안과 관련된 내용은 기존 경험에 의한 생각, 웹훅 서비스를 제공하고 있는 서비스 벤치마킹 그리고 네이버와 센드버드에서 보안 업종에 종사하고 있으신 분에게 조언받아 작성하였습니다. 🙂 시스템 체크리스트(보안) 1. 통신 암호화 100% 신뢰할 수 있으며 통제할 수 있는 내부 시스템이 아닌 이상 통신 암호화는 필수요소라고 말할 수 있습니다. HTTP 통신을 한다면..

    마이크로서비스 아키텍처를 구성하는 핵심 요소 8가지 | 무조건 MSA가 정답일까?

    마이크로서비스 아키텍처는 기본적으로 '해결하려는 문제'를 기준으로 서비스를 분리하는 아키텍처입니다. 소위 말하는 DDD(Domain Driven Design; 도메인 주도 설계)에서 사용하는 도메인이라는 개념과 비슷한 기준으로 서비스를 분리한다고 볼 수도 있습니다. 이렇게만 이야기하면 잘 와닿지 않으니 예시를 하나 들어보겠습니다. 앞서서 해결하려는 문제를 기준으로 각 서비스를 분리한다고 이야기 드렸습니다. 쇼핑몰 앱이 있다고 한다면, 이 쇼핑몰을 운영하기 위해선 계정을 관리해야 한다는 문제가 있고, 결제도 관리 해야하고, 주문도 관리를 해야 합니다. 기존의 모놀리틱 아키텍처(Monolith Architecture)에서는 하나의 프로젝트, 하나의 웹 서버에서 이걸 다 처리했다면, 마이크로서비스 아키텍처에서..

    Why DDD, Clean Architecture and Hexagonal ?

    어느 순간부터 소프트웨어 개발 세계에서는 도메인 주도 설계, 클린 아키텍처라는 용어가 사용 되기 시작했습니다. 이것들은 도대체 어떤 것이며, 왜 등장하게 됐을까요? 도메인 주도 설계(Domain-Driven Design) 💡 소프트웨어의 본질은 해당 소프트웨어의 사용자를 위해 도메인에 관련된 문제를 해결하는 능력에 있다 DDD와 객체지향 도메인 주도 설계를 보다 잘 이해하고 적용하기 위해선 객체지향에 대한 이해가 필요합니다. 객체지향의 본질과 핵심은 뭘까요? 저는 객체 그 자체라고 생각합니다. 객체지향이라는 것은 결국 각 객체간 역할을 명확히 가져가고, 각 객체간에 메시지를 주고 받는 형태의 프로그래밍 방법론이라 생각하기 때문인데요. 그렇다면 객체지향 프로그래밍에서 사용되는 이 객체들은 어떻게 추려낼 수..