
177
8
장
이벤트와 메시지 버스
8.1
지저분해지지 않게 막기
그렇다. 재고가 없으면 구매팀에게 이메일로 통지한다. 핵심 도메인과
정말
아무 관련 없는 새
로운 요구 사항이 생긴다면 이런 요구 사항을 아무 생각 없이 웹 컨트롤러에 넣기가 쉽다.
8.1.1
가장 먼저 웹 컨트롤러가 지저분해지는 일을 막자
한 번만 변경하는 것이라면 이런 식으로 웹 컨트롤러에 기능을 추가해도 잘 동작한다.
그냥 엔드포인트에서 처리하자, 뭐가 잘못되겠어(
src
/
allocation
/
entrypoints
/
flask
_
app
.
py
)
@app.route(“/allocate”, methods=[‘POST’])
def allocate_endpoint():
line = model.OrderLine(
request.json[‘orderid’],
request.json[‘sku’],
request.json[‘qty’],
)
try:
uow = unit_of_work.SqlAlchemyUnitOfWork()
batchref = services.allocate(line, uow)
except (model.OutOfStock, services.InvalidSku) as e:
send_mail(
‘out of stock’,
‘stock_admin@made.com’,
f’{line.orderid} - {line.sku}’ ...