6장 함수형 프로그래밍

가변성의 분리

 

"함수형 언어에서는 변수의 값이 변경 되지않는다." 아키텍처를 고려할 때 이 내용은 중요하게 여겨진다. 경합 조건, 교착상태 조건, 동시업데이트 즉, 동시성 문제가 모두 가변 변수로 인해 발생하기 때문이다. 그렇기때문에 애플리케이션을 제대로 구조화하기위해서는 변수를 변경하는 컴포넌트와 변경하지않는 컴포넌트를 분리해야한다. 불가변 컴포넌트와 가변컴포넌트는 분리하며 가변컴포넌트는 트랜잭션 메모리(책참고)를 통해 동시성문제로부터 가변변수를 보호할 수 있다.

 

 

 

이벤트 소싱(Event Sourcing)

 

상태가아닌 트랜잭션을 저장하자는 전략을 말한다. 결과적으로 애플리케이션은 동시성문제를 유발하는 CRUD가 아닌 CR만 수행하게되므로 동시성문제가 발생하지않는다. 저장공간과 처리능력이 충분하다면 이 전략을 사용하여 완전한 불변성을 가지는, 완전한 함수형으로 애플리케이션을 만들 수 있다.

 

 

 

결론

 

  • 구조적 프로그래밍은 제어흐름의 직접적인 전환에 대해 규칙을 부과한다.
  • 객체 지향 프로그래밍은 제어흐름의 간접적인 전환에 대해 규칙을 부과한다.
  • 함수형 프로그래밍은 변수 할당문에 대해 규칙을 부과한다.

어떤 패러다임도 우리의 권한이나 능력에 무언가를 보태지 않으며 그저 우리가 코드를 작성하는 방식의 형태를 한정시킨다.

도구는 달라졌고 하드웨어도 변했지만, 소프트웨어의 핵심은 그대로이다.

개발된 프로그램은 순차, 분기, 반복, 참조로 구성되며 그 그이상도 이하도 아니다.

'📚 Book > Clean Architecture' 카테고리의 다른 글

10장 ISP: 인터페이스 분리 원칙  (0) 2020.02.19
8장 OCP: 개방-폐쇄 원칙  (0) 2020.02.19
7장 SRP: 단일책임 원칙  (0) 2020.02.17
5장 객체 지향 프로그래밍  (0) 2020.02.17
4장 구조적 프로그래밍  (0) 2020.02.17