“이 책은 인프런에서 이준형 님의 강의를 듣고 도서 증정 이벤트를 참여해 받은 책입니다”
전반적인 구성
저는 책을 보통 읽을 때 목차를 살피고 필요한 부분만 체크하는 편입니다.
목차의 흐름은 백엔드 개발자로 취업을 해서 하는 일과 역량에 대해 설명해 주고
기본적인 개발 채용 프로세스 그 후 실무에서 사용하는 필수 기본 지식과 같은 개념을 설명 후
웹 개발의 기초인 서버와 클라이언트부터 API 호출, HTML , 자바스크립트, HTTP에 대해 설명합니다.
그 후 실전 프로젝트를 하며 프로젝트에 대한 감각과 여러 팁들을 익힐 수 있습니다.
결론적으로 이 책은 개발자가 되기 위한 프로세스와 개발자가 돼서 개발을 하는 프로세스를
함축적으로 담고 있습니다.

장점
이 책의 장점은 신입 개발자가 알아야 하는 필수 지식에 대한 디테일한 내용이 담겨있습니다.
예시로 테스트 코드를 작성할 때 통합 테스트와 단위 테스트를 작성 후 차이점을 설명해 주고
각 테스트를 작성할 때 사용되는 코드에 대한 설명이 아주 잘 되어있습니다.
또한 CS 지식을 자연스럽게 익힐 수 있다는 것이 장점입니다.
무작정 CS를 공부하다 보면 어떤 식으로 활용해야 할지? 어떠한 상황에서 발생하는지
이러한 개념을 잘 모를 수 있지만 이 책은 이러한 설명이 잘 담겨있습니다.
책의 내용중 심화 공부 및 정리
이 책을 읽고 동기와 비동기, 블로킹과 논 블로킹에 대한 개념에 흥미가 생겨 좀 더 공부를 해봤습니다.
동기 비동기
동기는 작업을 요청하는 쪽과 작업을 처리하는 쪽이 서로 상태를 인지하고 상태를 동기화하는 것입니다. 이 과정에서 작업이 완료될 때까지 대기하게 됩니다. 즉 자바로 비유하면 메서드의 호출이 되고 종료가 되는 과정까지 다른 작업을 할 수 없습니다. 이것이 바로 동기입니다.
비동기는 반대입니다. 작업을 처리할 때 기다리지 않고 다른 활동이 가능합니다.
이 개념은 클라이언트와 서버가 통신할 때 자주 사용되는 개념입니다.
통신을 동기적으로 할지? 혹은 비동기적으로 할지 정할 수 있습니다.
즉. 동기적 통신은 서버가 작업을 처리하는 동안 클라이언트는 대기하고 있어야 하고, 비동기적 통신은 서버가 작업을 처리하는 동안 그 작업을 기억하지 않고 다른 작업을 수행할 수 있습니다.
이렇게만 보면 무조건 비동기가 좋은 거 아니야?라고 생각하지만 (실제로도 비동기를 많이 씀?)
비동기 방식이 성능적인 측면에서 무조건 유리한 건 아닌 것
블로킹과 논블로킹 (I/O)
동기, 비동기을 알면 당연시하게 알아야 하는 개념입니다.
동기와 비동기는 작업을 요청하는 쪽, 처리하는 쪽에 대한 두 주체 사이의 관계에 대해 이야기를 한다면
블로킹과 논 블로킹은 작업을 요청하는 쪽에서 어떻게 동작하는지를 표현하는 용어입니다.
동기와 블로킹은 함께 묶어서 생각해도 좋습니다.
즉, 동기는 작업이 완료될 때까지 다른 실행을 멈추고 있어야 합니다.
여기서 작업을 요청하는 쪽 ← 은 블로킹 상태가 된다고 할 수 있습니다.
따라서 블로킹은 동기화가 완료될 때까지 기다리고 있는 상태를 의미합니다.
비동기와 논 블로킹도 비슷합니다.
작업을 요청하는 쪽은 작업을 처리하는 쪽에 요청을 보내고 다른 작업을 하는 것이 논 블로킹입니다.
이때 작업을 처리하는 쪽에서 처리 완료 요청을 알려주는데 이것을 ‘콜백’이라고 합니다.
동기, 비동기 표
동기식 | 비동기 | |
정의 | 다음 작업을 시작하려면 작업이 완료되어야 합니다. | 작업은 시간상 겹칠 수 있습니다. 이전 작업이 완료되기 전에 다음 작업을 시작할 수 있습니다. |
클라이언트 행동 | 작업이 완료될 때까지 기다립니다. | 작업이 완료되는 동안 다른 작업을 계속합니다. |
효율성 | 작업이 느리면 유휴 시간이 발생하므로 효율성이 떨어집니다. | 유휴 시간을 낭비하지 않음으로써 장기 작업이나 가변 작업을 보다 효율적으로 처리할 수 있습니다. |
사용 사례 | 작업을 순차적으로 완료해야 하는 경우. | 작업이 독립적이거나 동시에 완료될 수 있는 경우. |
복잡성 | 구현하고 이해하는 것이 더 간단합니다. | 동시성 및 잠재적인 데이터 문제 관리로 인해 더욱 복잡해졌습니다. |
블로킹과 논블로킹 표
블로킹 | 논블로킹 | |
정의 | 작업이 완료될 때까지 애플리케이션에 제어권을 반환하지 않습니다. | 작업이 완료될 때까지 기다리지 않고 애플리케이션에 제어권을 반환합니다. |
프로그램 동작 | I/O가 완료될 때까지 프로그램 실행을 중지합니다. | I/O 중에 프로그램 실행을 계속할 수 있습니다. |
효율성 | 특히 I/O가 느린 경우에는 비효율적일 수 있습니다. | I/O 중에 멀티태스킹이 가능하므로 더욱 효율적입니다. |
사용 사례 | 빠른 I/O 완료가 보장되거나 허용되는 간단한 작업입니다. | 작업이 I/O에 바인딩되어 있지만 응답성을 유지해야 하는 고성능 환경입니다. |
복잡성 | 동시 작업 처리가 필요하지 않으므로 관리가 더 쉽습니다. | 동시성, 콜백 또는 이벤트 기반 프로그래밍 처리가 필요합니다. |
결론
동기 또는 비동기, 차단 또는 비차단 작업을 사용할지 여부는 다음과 같은 애플리케이션의 특정 요구 사항에 따라 결정됩니다.
- 응답 시간 요구 사항: 비동기식 방법은 사용자 상호 작용에 더 빠른 응답을 제공할 수 있는 반면, 작업을 엄격한 순서로 완료해야 하는 경우 동기식 방법이 더 나을 수 있습니다.
- 리소스 효율성: 비동기식 및 비차단 방식은 CPU 및 기타 리소스를 더 효율적으로 활용하여 여러 작업이 시간적으로 중복되도록 할 수 있습니다.
- 처리의 복잡성: 동기 및 차단 방법은 비동기 및 비차단 방법에서 발생하는 동시성 문제를 처리하지 않기 때문에 코딩, 디버그 및 이해가 더 간단합니다.
느낀점
자바 개발자로 취직 준비를 하신다면 이 책을 정독 후
책 후반부에 있는 과제 테스트 양식을 혼자 코딩 후 비교해 보며 보완해 나가는 것이 아주 좋다고 생각합니다. 또한 면접전에 필요한 부분만 읽고 간다면 충분히 적절한 답변과 꼬리 질문을 대응할 수 있다고 생각합니다.

'자바 정리' 카테고리의 다른 글
JAVA의 Call by Value , Call by reference (0) | 2024.03.26 |
---|---|
JPA 연관관계 매핑 (0) | 2023.08.24 |
[TDD] 테스트 코드 작성하는이유 (0) | 2023.08.22 |
Model Mapper 라이브러리란 (1) | 2023.08.03 |
서블릿과 JSP를 활용하여 간단한 뉴스 CRUD 웹페이지 (0) | 2023.08.02 |