🔖 오늘 읽은 범위 : <6장. 동시성> 241p ~ 272p
<aside> ⭐ 오늘 TIL 3줄 요약
</aside>
동시성
을 개선할 수 있는 일반적인 형태는 커다란 작업을 독립적인 부분들로 쪼개서 병렬로 각각 처리한 다음, 결과를 합치는 것이다.액터들
은 아무것도 공유하지 않으면서 비동기적으로 동시에 실행된다. 어느 쪽이든 액터에서 실행되는 코드는 동일하다. (feat.얼랭 언어와 런타임을 통해 구현 )칠판
으로 작업 흐름을 조율하라. (feat. 법적 요구사항을 캡슐화하는 규칙 엔진과 함께)<aside> 😃 책에서 기억하고 싶은 내용을 써보세요.
</aside>
동시성
: 둘 이상의 코드 조각이 실행될 때 동시에 실행 중인 것처럼 행동하는 것!
동시성을 얻으려면 실행 중에 코드의 다른 부분으로 실행을 전환할 수 있는 환경에서 코드를 구동해야 한다. ( 파이버, 스레드, 프로세스 등 )
즉, 소프트웨어 동작 방식
병렬성
: 실제로 동시에 실행되는 것!
병렬성을 얻으려면 두 가지 일을 동시에 할 수 있는 하드웨어가 필요하다. ( CPU 하나에 있는 여러 개의 코어 or 컴퓨터 한 대에 있는 여러 CPU or 네크워크로 연결된 여러 대의 컴퓨터 )
즉, 하드웨어가 하는 방식
→ 세상은 비동적이기 때문이다. 사용자와 상호 작용하고, 데이터를 불러오고, 외부 서비스를 호출하는 일을 동시에 해야 한다. 만약 이를 순차적으로 하나를 끝낸 다음에 다음 일을 하는 식으로 수행한다면, 시스템은 거북이처럼 느리게 느껴질 것이고 프로그램을 구동하는 하드웨어의 성능도 최대로 활용하지 못할 것이다.
<소프트웨어의 설계 요소로서 시간의 역할>
‘시간’ 측면 - 동시성 (동시에 일어나는 일들) | 순서 (시간의 흐름 속에서 일들의 상대적인 위치)
우리는 동시에 일어나도 되는 게 뭐고, 반드시 순서대로 일어나야 하는 건 어떤 것인지...
작업 흐름 분석으로 동시성을 개선하라. (feat. 활동 다이어그램)