Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[노예찬] 챕터 13: 함수형 도구 체이닝 , 챕터 14: 중첩된 데이터에 함수형 도구 사용하기 #67

Merged
merged 2 commits into from
Nov 16, 2024

Conversation

noy3928
Copy link
Contributor

@noy3928 noy3928 commented May 21, 2024

No description provided.

@noy3928 noy3928 changed the title [노예찬] 챕터13: 함수형 도구 체이닝 , 챕터 14: 중첩된 데이터에 함수형 도구 사용하기 [노예찬] 챕터 13: 함수형 도구 체이닝 , 챕터 14: 중첩된 데이터에 함수형 도구 사용하기 May 21, 2024
Copy link
Member

@hyesungoh hyesungoh left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍 👍 👍 👍 👍 👍 👍 고생하셨습니다 👍

Comment on lines +29 to +33
> \*스트림 결합 :
> map, filter와 같은 함수형 도구는 배열을 새로 생성하기 때문에 메모리 관리 측면에서 비효율적일 수 있다.
> 이런 경우에는 스트림 결합을 사용할 수 있다. 스트림 결합은 여러 함수를 하나로 합치는 것이다.
> 예를 들어 var a = map(customers, getFullnames); var b = map(names, stringLength);와 같은 함수가 있다면,
> var c = map(customers, stringLength(getFullnames))와 같이 하나로 합칠 수 있다.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍 👍 👍

Comment on lines +40 to +69
## \* 이벤트 소싱이란? :

이벤트 소싱(Event Sourcing)은 소프트웨어 설계 패턴 중 하나로, 시스템의 상태를 이벤트(event)의 시퀀스로 저장하고 관리하는 방식입니다. 각 이벤트는 상태 변화의 기록을 나타내며, 이러한 이벤트의 연속을 통해 시스템의 현재 상태를 재구성할 수 있습니다.

이벤트 소싱의 주요 개념

1. 이벤트(Event): 시스템 내에서 발생한 중요한 상태 변화를 기록한 것. 예를 들어, “사용자가 상품을 구매했다”는 이벤트가 될 수 있습니다.
2. 이벤트 스토어(Event Store): 이벤트를 저장하는 저장소. 일반적인 데이터베이스와는 달리 이벤트 로그의 형태로 저장됩니다.
3. 상태 재구성(State Reconstruction): 이벤트 로그를 순차적으로 재생하여 현재 시스템의 상태를 재구성하는 과정.

함수형 프로그래밍과의 관계

함수형 프로그래밍은 불변성과 순수 함수를 중시하는 프로그래밍 패러다임입니다. 이벤트 소싱은 이러한 함수형 프로그래밍의 철학과 잘 맞아떨어집니다. 다음은 그 이유입니다:

1. 불변성: 이벤트는 발생한 이후에는 변경되지 않는 불변 데이터입니다. 이는 함수형 프로그래밍에서 강조하는 불변성과 일치합니다.
2. 순수 함수: 이벤트를 처리하는 함수는 주어진 이벤트와 이전 상태를 입력으로 받아 새로운 상태를 반환하는 순수 함수가 될 수 있습니다. 이는 함수형 프로그래밍의 핵심 개념 중 하나입니다.
3. 투명성: 이벤트 소싱은 시스템의 상태 변화를 명확하게 기록하므로, 함수형 프로그래밍의 투명성(transparency)을 유지하는 데 도움을 줍니다.

이벤트 소싱의 장점

• 추적 가능성: 모든 상태 변화가 이벤트로 기록되므로, 시스템의 상태를 언제든지 재구성하고 검토할 수 있습니다.
• 이벤트 재생: 과거 이벤트를 재생하여 시스템의 특정 시점의 상태를 쉽게 재구성할 수 있습니다.
• 확장성: 이벤트 기반 아키텍처는 시스템을 더 유연하고 확장 가능하게 만듭니다.

이벤트 소싱의 단점

• 복잡성: 이벤트를 관리하고 저장하는 데 추가적인 복잡성이 수반됩니다.
• 성능: 모든 이벤트를 재생하여 상태를 재구성하는 것은 성능에 부담이 될 수 있습니다.

이벤트 소싱은 특히 복잡한 비즈니스 로직을 다루는 시스템에서 유용하게 사용할 수 있으며, 함수형 프로그래밍의 철학과 결합할 때 매우 강력한 도구가 될 수 있습니다.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

깔꼼하네요 .. 역시 👍 👍 👍 👍

@hyesungoh hyesungoh merged commit b08ef85 into main Nov 16, 2024
1 check passed
@hyesungoh hyesungoh deleted the 챕터14/노예찬 branch November 16, 2024 04:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants