개발자 99% 커뮤니티에서 수다 떨어요!
오늘 TIL 2줄 요약
동시성을 확보함으로써 프로그램에 유연성을 얻을 수 있고 개발의 여러 측면에서 시간과 관련된 의존성도 함께 줄여, 분석하기 쉽고 응답속도도 빠른 안정적인 시스템을 만들 수 있게 된다. (시간적 결합 깨트리기)
동시성을 구현하는 방법으로 액터와 프로세스를 사용하는 방식이 있다.
TIL (Today I Learned) 날짜
2022. 03. 30
오늘 읽은 범위
6장. 동시성
책에서 기억하고 싶은 내용을 써보세요.
'동시성 (concurrency)'은 둘 이상의 코드 조각이 실행될 때 동시에 실행 중인 것처럼 행동하는 것.
'병렬성 (parallelism)'은 실제로 동시에 실행되는 것.
소프트웨어의 설계 요소로서의 시간에는 우리가 신경 써야 할 측면이 두 가지가 있는데, 그것은 동시성(동시에 일어나는 일들)과 순서(시간의 흐름 속에서 일들의 상대적인 위치)다.
우리는 시간이나 순서에 의존하는 시간적 결합을 끊는 방법을 생각해 내야 한다. 그렇게 함으로써 유연성도 얻을 수 있고, 작업 흐름 분석과 아키텍처, 설계, 배포와 같은 개발의 여러 측면에서 시간과 관련된 의존성도 함께 줄일 수 있다. 결과적으로 분석하기 더 쉽고 응답속도도 더 빠르며 더 안정적인 시스템을 만들 수 있을 것이다.
작업 흐름 분석으로 동시성을 개선하라.
공유 상태는 틀린 상태다.
리소스를 공유하는 환경에서 동시성은 어렵다.
액터와 프로세스를 사용하면 흥미로운 방식으로 동시성을 구현할 수 있다.
액터: 자신만의 비공개 지역 상태를 가진 독립적인 가상 처리 장치.
프로세스: 더 일반적인 가상 처리기. 보통 운영 체제가 동시성을 지원하기 위하여 구현.
공유 상태 없는 동시성을 위하여 액터를 사용하라.
오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요
5장까지는 어느 정도 들어봤던 개념들이였지만 동시성과 병렬성은 사실 개인적으로 생소한 개념이라 조금 어렵게 느껴졌다. Topic 33 시간적 결합 깨트리기 부분에서 '우리는 보통 프로그래밍할 때 두 측면 (동시성, 병렬성) 모두 특별히 신경쓰지 않는다. 자리에 앉아 아키텍처를 설계하거나 프로그램을 짜기 시작할 때는 보통 직선적 사고를 하기 마련이다.' 라는 부분에서 뜨끔했다. 이제 동시성이라는 개념에 대해 알게 되었으니 다음에 코드를 짤 때는 동시성도 고려해봐야겠다.