Community

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

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

오늘 TIL 3줄 요약

  • 동시성은 기회이자 위기이다.

  • 공유 상태는 무척 조심해서 사용해야 한다.

  • 액터나 메시지 시스템을 사용하여 공유 상태를 배제할 수 있다.

TIL (Today I Learned) 날짜

2022.03.31(목)

오늘 읽은 범위

  • 6장 동시성

    • Topic 33 시간적 결합 깨트리기

    • Topic 34 공유 상태는 틀린 상태

    • Topic 35 액터와 프로세스

    • Topic 36 칠판

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

우리는 동시성을 확보해야 한다. 시간이나 순서에 의존하는 시간적 결합 을 끊는 방법을 생각해 내야 한다.그렇게 함으로써 유연성도 얻을 수 있고, 작업 흐름 분석과 아키텍처, 설계, 배포와 같은 개발의 여러 측면에서 시간과 관련된 의존성도 함께 줄일 수 있다. 결과적으로 분석하기 더 쉽고 응답속도도 더 빠르며 더 안정적인 시스템을 만들 수 있을 것이다.

시간 결합도 시스템 결합 만큼 파훼하여야할 대상이다. 일의 선후가 분명 있을 수는 있겠지만 동시 수행이 가능한 독립적인 작업들을 잘 식별하고 발라내어 시간 결합을 최대한 제거해야 할 것이다.

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

오늘날 무어의 법칙이 한계를 보이고 있는 상황에서 동시성은 개발자의 첨단 무기이자 아픈 손가락이다. 동시성을 잘 활용하면 하고자 하는 일을 효율적으로 처리할 수 있고 사용자에게는 즉각적인 응답성을 제공할 수 있다. 그러나 얻는 것이 있으면 그에 따른 위험 부담도 따라오기 마련. 동시성을 다루는 일은 날카로운 단도로 저글링을 하는 것 만큼 어렵고 위험한 작업이다.

병렬 처리에서 문제가 발생하는 부분은 보통 공유 상태를 다루는 부분이다. 공유 상태를 다루다 보면 동시성 문제가 발생하거나 경쟁 상황이 되기가 십상이다.

따라서 안정적인 병렬 처리를 위해서는 가급적 공유 상태를 갖지 않도록 시스템을 설계하는 것이 바람직하다. 시스템을 오직 액터와 액터 간에 주고 받은 메시지의 흐름으로 보는 액터 모델과 카프카 같은 메시징 계층을 도입하는 것이 좋은 해결책이 될 수 있을 것이다.

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

액터 모델에 대해서는 들어서 알고는 있었지만 사용해보지는 않았다. Akka 같은 액터 프레임워크를 이용하여 간단한 파일럿을 구성해보면 좋을 것 같다.

오늘 읽은 다른사람의 TIL

부록 Tips

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

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

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

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

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

2 comments