Community

개발자 99% 커뮤니티에서 수다 떨어요!

← Go back
TIL 6장 동시성
#pragmatic
2년 전
600
1

오늘 TIL 3줄 요약

  • 모든 일에는 동시성이 있다.

  • 불규칙한 실패는 동시성 문제인 경우가 많으며 작업 흐름 분석으로 개선해라.

  • 작업들에 고유한 추적 아이디를 부여하고 관여하는 액터들에게 전파하여 작업 흐름을 파악하고 조율하자.

TIL (Today I Learned) 날짜

2022. 03. 30

오늘 읽은 범위

6장. 동시성

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

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

  • 병렬성(parallelism)이란 실제로 동시에 실행되는 것이다.

  • 모든 일에는 동시성이 있다.

  • 우리는 동시성을 확보해야 한다. 결과적으로 분석하기 더 쉽고 응답속도도 더 빠르며 더 안정적인 시스템을 만들 수 있을 것이다.

  • 작업 흐름 분석으로 동시성을 개선하라.

  • 활동 다이어그램을 사용하면 동시에 수행할 수 있는데도 아직 동시에 하고 있지 않은 활동들을 찾아내서 병렬성을 극대화할 수 있다.

  • 공유 상태는 틀린 상태다.

  • 인스턴스 둘 이상인 파일, 데이터베이스, 외부 서비스 등 어떤 리소스에 동시에 접근할 수 있다면 잠재적인 동시성 문제를 안고 있는 것이다.

  • 불규칙한 실패는 동시성 문제인 경우가 많다.

  • 리소스를 공유하는 환경에서 동시성은 어렵다. 해결 하겠다고 한다면 고난의 연속일 것이다.

  • 액터(actor)와 프로세스를 사용하면 흥미로운 방식으로 동시성을 구현할 수 있다. 공유 메모리 접근을 동기화하느라 고생할 필요도 없다.

  • '액터'는 자신만의 비공개 지역 상태(state)를 가진 독립적인 가상 처리 장치(virtual processor)다.

  • '프로세스'는 본래 더 일반적인 가상 처리기로, 보통 운영 체제가 동시성을 지원하기 위하여 구현한다.

  • 공유 상태 없는 동시성을 위하여 액터를 사용하라.

  • 최초의 칠판 시스템 중 하나는 데이비드 겔런터(David Gelernter)가 만든 린다(Linda)였다. 린다는 수집한 사실을 유형별 튜플로 저장했다. 애플리케이션들은 린다에 새로운 튜플을 쓰거나 저장된 튜플을 패턴 매칭 같은 방법으로 조회 할 수 있었다.

  • 분산된 칠판 형태의 시스템을 이용하면, 객체의 데이터뿐만 아니라 자바 객체 전체를 칠판에 저장할 수 있고, 템플릿이나 와일드카드를 통한 필드의 부분 일치 검색 또는 유형별 검색으로 다시 불러올 수 있다.

  • 칠판으로 작업 흐름을 조율하라.

  • 특정한 비즈니스 작업 처리를 시작할 때 고유한 '추적 아이디 (trace id)'를 만들어 붙이고, 해당 작업에 관여하는 모든 액터로 아이디를 전파하여 로그 파일을 통해 일어난 일을 재구성해 볼 수 있을 것이다.

오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요

  • 화,수 퇴근 후 자기전 몇시간 내서 읽었는데 실제 업무에 어떻게 적용 가능할지는, 동시성/공유상태/액터/프로세스 등 추가 공부가 필요할 것 같습니다.

  • 주말에 미리 뒷편까지 읽으면서 정리하고 소스와 연습 문제도 더 관심을 가져야 겠습니다.

  • 현재 작업중인 소스에도 서로 관여된 데이터들이 많아서 불필요한 시간을 낭비하고 그만큼 문제도 많이 발생하고 있는데, 어떻게 처리해야 할지 더 고민해봐야 겠습니다.

궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.

오늘 읽은 다른사람의 TIL

1 comment