이벤트 기반 접근 방식
우리는 거래 소프트웨어를 현실 세계의 임의의 사건에 반응하는 시스템으로 생각할 수 있습니다. 시장에서 어떤 일이 발생합니다. 가격 변동, 이벤트입니다. 시스템 내에서 이를 처리하고 다른 이벤트, 예를 들어 조건이 충족되는 주문을 생성할 수 있습니다. 필요에 따라 로깅 또는 알림 이벤트를 생성할 수도 있습니다.
이벤트 기반 접근 방식은 시스템 내부에서 일어나는 일을 더 잘 이해하고 제어를 유지하며 보다 명확하고 효율적인 소프트웨어 아키텍처를 지원하는 데 도움이 됩니다.
이벤트는 Google 아키텍처의 기본 요소입니다. 이벤트를 데이터 클래스 또는 데이터 구조로 생각할 수 있습니다. 이벤트 유형, 타임스탬프, 특정 데이터 등과 같은 많은 정보를 포함할 수 있습니다.
예시:
class Event(object):
#base class
pass
class AccountUpdateEvent(Event):
def __init__(self, timestamp, username, total):
self.type = 'ACCOUNT_UPDATE'
self.timestamp = timestamp
self.username = username
self.total = float(total)
이제 100줄 미만의 Python 코드로 이벤트를 생성하고 처리할 수 있는 간단한 애플리케이션을 빌드할 것입니다!
첫 번째 모듈은 API를 호출하고 이벤트를 생성합니다.
예제 코드(전체 클래스는 my GitHub repo에서 사용 가능):
class GetAccountData:
def create_event(self, timestamp, username, total):
self.events.put(AccountUpdateEvent(timestamp=timestamp, username=username, total=total))
두 번째 모듈은 이벤트를 처리합니다.
예제 코드(전체 클래스는 my GitHub repo에서 사용 가능):
class ProcessAccountData:
def update_account_data(self, event):
print('Account update received at: ', event.timestamp, 'Username: ', event.username, 'Total balance: ', event.total)
그리고 마지막으로 우리의 앱입니다. 여기에는 GetAccountData 및 ProcessAccountData와 이벤트 대기열이 모두 포함됩니다.
예제 코드(전체 클래스는 my GitHub repo에서 사용 가능):
class App:
def __init__(self):
self.events = Queue()
self.get_data_account = GetAccountData(self.events)
self.process_data_account = ProcessAccountData()
이 앱에는 이벤트를 처리하는 루프가 포함되어 있습니다. 새 이벤트가 대기열에 있으면 이를 꺼내서 처리합니다.
예제 코드(전체 클래스는 my GitHub repo에서 사용 가능):
def event_loop(self):
while True:
try:
event = self.events.get(False)
except Exception as e:
time.sleep(1)
break
else:
try:
if event is not None:
if event.type == 'ACCOUNT_UPDATE':
self.process_data_account.update_account_data(event)
except Exception as e:
print('event_loop error:', e)
이것은 간단한 이벤트 기반 애플리케이션의 예입니다. my GitHub repo에서 소스 코드를 찾을 수 있습니다.
Reference
이 문제에 관하여(이벤트 기반 접근 방식), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/jungle_sven/event-driven-approach-524f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)