DevOps
[ DevOps ] - AWS 기반 대규모 아키텍트 설계 - (인프라) 마이크로서비스 아키텍쳐 개발 시 고려해야 하는 사항들
초기 설계의 중요성 마이크로 서비스를 개발하는데 있어서, 가장 중요한 점은 독립성이 최 우선이기도 하지만, API설걔에 있어서 거의 변경사항이 없다고 봐야한다고 할 정도로 완벽하게 설걔를 해야 한다는 점입니다. 마이크로 서비스는 모놀리식과는 다르게 회사의 규모가 큰 경우에 진행되고, 각각의 서비스가 하나의 팀인 경우가 많게 됩니다. 그러면 각 팀마다의 소통은 별로 없을 수도 있고, 이에 따라 API의 설계가 자꾸 바뀌면 매우 골치아파집니다. 그리고 마이크로 서비스에 있어서 스키마 관리도 매우 중요합니다. 만약에 서비스1에서 shop_name이 있고, 서비스2에도 shop_name이 있다면 이는 매우 효율적이지 못한 DB구조입니다. 따라서 각각의 서비스는 id와 최소의 정보만으로 정보들을 참조할 수 있게끔..
[ DevOps ] - AWS 기반 대규모 아키텍트 설계 - 데이터복제 이벤트 처리 Internal HTTP
이번에는 Flask의 main쪽을 수정을 해 보면서, 내부 HTTP연결을 통해서 두 서비스간에 소통을 하는 방법에 대해 간단히 알아보겠습니다. 그래고 저번시간에 코드도 잘못된 것이 있으므로 최종으로 코드의 틀을 완성하고 테스팅하는 시간이라고 보시면 됩니다. /boss/main.py from flask import Flask, jsonify, abort from flask_sqlalchemy import SQLAlchemy from flask_cors import CORS from dataclasses import dataclass from producer import publish import requests app = Flask(__name__) app.config['SQLALCHEMY_DATABASE..
[ DevOps ] - AWS 기반 대규모 아키텍트 설계 - 데이터복제 이벤트 처리 ( RabbitMQ )
우선 두 DB의 SYNC를 맞춰주기 위해 먼저 order로 REST API가 불러져서DB의 상태가 바뀌게 되면, boss에도 RabbitMQ를 통해 이를 알려주고 이의 DB도 바꾸어 보는 실습을 해보겠습니다. 실습 이를 위해서는 먼저 order의 producer.py의 publish함수를 수정해줘야 합니다. API를 부를 떄, boss에서 필요한 method, body정보를 받아와야 하기 때문입니다. https://python.hotexamples.com/examples/pika.spec/BasicProperties/-/python-basicproperties-class-examples.html 이번 실습에서 사용할 pika의 중요구문입니다. 이를 기준으로 진행하겠습니다. /order/user_order..
[ DevOps ] - AWS 기반 대규모 아키텍트 설계 - (개발) Docker 패키징과 구동 테스트
이제 여태까지는 python consumer.py를 backend bash쉘로 들어가서 직접 브로커로부터 오는 메시지를 확인해야 했습니다. 하지만 이러한 명령어를 치기 귀찮으니까, 그냥 하나의 컨테이너를 만들어서 거기서 아예 CMD로 python consumer.py를 command로 주어 백그라운드에서 확인할 수 있게 해 보겠습니다. 이를 위해서는 당연히 docker-compose.yml을 조금 수정해야 합니다. Django /docker-compose.yml version: '3.8' services: backend: build: context: . dockerfile : Dockerfile command: 'python manage.py runserver 0.0.0.0:8000' ports: - 8..