[TIL] 실용주의 프로그래머 || 6장 동시성

준리·2022년 5월 24일
0
post-thumbnail

오늘 TIL 3줄 요약

  • 동시에 혹은 병렬로 작동하는 코드가 신기하던 시절도 있었다. 하지만 이제는 필수다.
  • 칠판으로 작업 흐름을 조율하라.
  • 액터 모델에서는 동시성을 다루는 코드를 쓸 필요가 없다. 공유된 상태가 없기 때문이다.

TIL (Today I Learned) 날짜

2022.05.24(화)

오늘 읽은 범위

6장. 동시성

참고 동시성

책에서 기억하고 싶은 내용을 써보세요.

  • 동시성(concurrency)은 둘 이상의 코드 조각이 실행 될 때 동시에 실행 중인 것처럼 행동하는 것

    • 세상은 비동기적이기 때문에 사용자와 상호 작용하고, 데이터를 불러오고, 외부 서비슬르 호출하는 일을 동시에 해야 한다. 만약 이를 순차적으로 하나를 끝낸 다음에 다음 일을 하는 식으로 수행한 다면, 시스템은 거북이처럼 느리게 느껴질 것이고 프로그램을 구동하는 하드웨어 성능도 최대로 활용하지 못할 것이다.
    • 우리는 동시성을 확보해야 한다. 시간이나 순서에 의존하는 시간적 결합을 끊는 방법을 생각해 내야 한다. 그렇게 함으로써 유연성도 얻을 수 있고, 작업 흐름 분석과 아키텍처, 설계, 배포와 같은 개발의 여러 측면에서 시간과 관련된 의존성도 함께 줄일 수 있다.
  • 병렬성(parallelism)이란 실제로 동시에 실행되는 것

  • 동시성이나 병렬성을 지원하는 코드를 쓰는 건 왜 그렇게 어려울까? 한 가지 이유는 우리가 프로그래밍을 순차적 시스템으로 배워서다. 그리고 우리가 쓰는 언어의 기능이 순차적으로 사용할 때는 비교적 안전하지만, 동시에 뚜가지 일이 일어날 수 있으면 골칫거리로 변해서다.

  • 칠판 시스템을 법적 요구 사항을 캡슐화하는 규칙 엔진과 함께 사용하면 이러한 어려움을 우아하게 해결할 수 있다. 데이터의 도착 순서는 이제 상관없다. 어떤 사실이 칠판에 올라가면 적절한 규칙이 발동되도록 하면 된다.

오늘의 책 다시보기

어떤 업무를 처리하는 과정, 또는 아침을 시작하는 과정을 순서로 구현해서 작업 흐름 분석으로 동시성을 개선하는 예제는 재미있었다. 실생활에서도 문제를 해결하는 방법에 대한 고민을 할 수 있었다.

profile
트렌디 풀스택 개발자

0개의 댓글