DevOps
[ DevOps ] - AWS 기반 대규모 아키텍트 설계 - (개발) 도메인 서비스 구현 - Django, Docker
여기에서는 간단히 order서비스를 Django를 통해서 만들고 docker compose 설정까지 간단히 해보겠습니다. $django-admin startproject order 이를 통해 간단한 order틀을 만들어 주었습니다. 그리고 루트 폴더에 requirements.txt, Dockerfile, docker-compose.yml을 작성해 주도록 하겠습니다. /requirements.txt Django==3.1.3 djangorestframework==3.12.2 mysqlclient==2.0.1 django-mysql==3.9 django-cors-headers==3.5.0 pika==1.1.0 개발에 필요한 의존성을 다 적어 주었습니다. pika는 RabbitMQ를 위한 툴입니다. /Docke..
[ DevOps ] - AWS 기반 대규모 아키텍트 설계 - (설계) 마이크로서비스 아키텍쳐
마이크로서비스 아키텍쳐 여기에서는 이제 본격적으로 마이크로서비스를 개발하기 위한 아키텍쳐를 설명해보도록 하겠습니다. 아마 Frontend는 하지 않을것같습니다. Order와 Boss의 구현에 집중을 하겠습니다. Order는 Django로 짜고, Boss는 Flask로 짜겠습니다. 아예 독립적으로 구현한다는 말이죠. 각각을 Docker 컨테이너로 만들겁니다. 그리고 각각 Order와 Boss사이의 인터렉션을 Internal API로 동기적으로, RabbitMQ를 이용하여 비동기적으로 소통해보도록 하겠습니다. 그리고 Order와 Boss가 사용하는 DB가 다를겁니다. 이 두개가 다르다는 것은 두 DB간의 동기화가 필요하다는 것입니다. 만약 Boss의 DB가 바뀌었다고 해 봅시다. 그럼 RabbitMQ를 통해..
[ DevOps ] - AWS 기반 대규모 아키텍트 설계 - (설계) 마이크로서비스 간의 통신 방식(Kafka, RabbitMQ)
마이크로서비스 간의 통신방식에 대해 알아보겠습니다. Synchronouse Solution에는 당연히 동기적으로 하는 것이므로, Rest API가 있습니다. 이는 매우 익숙한 방법입니다. Asynchronouse Messaging는 서비스 A가 서비스 B로 메세지를 보낼 때, 서비스A는 브로커한테 바로 메세지를 보냅니다. 그리고 서비스A는 응답을 기다리지 않습니다. 그래서 일단 비동기라고 지칭합니다. 그리고 서비스B는 준비가 되었을 때, 결과를 브로커에게 보냅니다. 그리고 브로커가 A에게 결과를 보내는 방식입니다. 이를 위해서는 RabbitMQ와 Apache Kafka를 사용합니다. 우리의 실습에서는 RabbitMQ를 일단 사용해보도록 하겠습니다. 만약 서비스 A가 B로 요청을 보냈는데 B가 오프라인상태..
[ DevOps ] - AWS 기반 대규모 아키텍트 설계 - (개요) 마이크로서비스의 장단점
마이크로서비스를 하기전에 이에대한 개념에 대해 알아보겠습니다. 모놀리식 아키텍쳐 대부분의 토이프로젝트가 모놀리식 아키텍쳐입니다. 상황을 가정하여봅시다. 프로젝트를 하다보면 A라는 기능을 완성해서 배포하는데, 기획단에서 다른 기능을 기획해서 B라는 기능을 추가해야 된다고 봅시다. A라는 기능을 할때는 버그터질게 별로 없었습니다. 하지만 B를 추가하니까 갑자기 버그나 나타나는 현상을 일으킬 수 있습니다. 분명 A는 아무것도 만지지 않았음에도 불구하고 말이죠. 독립적이지 않았기 때문이죠 만약 백엔드를 Java Spring으로 구현하는데, 머신러닝을 python으로 구현하고 싶다고 해 봅시다. 이게 모놀리식이게 된다면 머신러닝을 무조건 Java로 해야합니다. 아주 불편한 상황이 됩니다. 하지만 모놀리식도 장점이..