<aside> 💡 from. ‘자바 개발자를 위한 데브옵스 툴’
"자신이 해결해야 할 문제가 과연 제대로 된 문제인지 처음부터 신중하게 고려하기 바란다. 가령 다음 지침은 성능 문제의 탈을 쓰고 있지만 사실상 구현 문제를 제기한다. ‘성능을 높이기 위해 애플리케이션을 마이크로서비스 단위로 쪼개고 컨테이너화시킬 것’. 제대로 된 문제는 다음과 비슷하다. ‘고객들의 목표 완수 시간을 단축하기 위해 애플리케이션 성능을 5% 향상시킬 것’. 후자는 결과 성공 여부를 측정할 수 있는 실질적 메트릭을 포함하고 있으며 실현 방법도 마이크로서비스 구현으로 한정짓지 않는다.”
</aside>
한 컴퓨터가 한 애플리케이션 실행을 담당하는 것이 일반적이었다.
당시 컴퓨터는 매우 느리고, 한 가지 프로세스을 완료하는 데 많은 시간이 걸렸다.
현재와 같은 멀티태스킹 능력도 거의 없었기 때문에 하나의 프로세스가 끝나기 전까지 다른 작업을 시작할 수 없었다.
<aside> 💡 프로세스 Process
운영체제가 실행 중인 프로그램의 인스턴스
컴퓨터와 CPU 시간과 메모리 자원을 할당받아 실행되며, 최소 하나 이상의 실행 흐름(스레드)를 가진다.
운영 체제는 멀티태스킹을 통해 여러 프로세르를 동시에 관리하고 실행할 수 있다.
</aside>
<aside> 💡 커널 Kernel
프로세스의 생성부터 종료까지 전 생명주기에 걸쳐 관리하는 역할
프로세스들이 시스템 자원을 효율적으로 사용하도록 조정한다.
커널이 하는 일
프로세스 생성과 관리, 자원할당, 프로세스 간 통신, 보안과 격리, 스케줄링
</aside>
프로세스 속도 증가를 위해 최대한 자원을 쪼개서 사용
→ 여러 사용자가 동시에 컴퓨터 자원을 공유하려할 때, 서로 간섭이 일어나는 경우가 발생
→ 한 명의 사용자가 시스템을 중단시켜버리는 경우도 발생
하나의 프로그램이 자원을 모두 사용하거나, 프로그램 에러로 OS까지 영향을 줌
프로세스 작동에 비용이 많이 들어감.