[TIL] HttpClient/ RestTemplate/ WebClient, 논블로킹 vs 비동…

2025-04-01 TIL

📝 TIL (Today I Learned)
🔗 원본 이슈: #34
📅 작성일: 2025-04-01
🔄 최종 수정: 2025년 04월 08일


🍀 새롭게 배운 것

✅ HttpClient, RestTemplate, WebClient

  • Java에서 REST API와 통신할 수 있도록 하는 HTTP 클라이언트
  • 공부하다 비슷한 개념들의 성능적 차이점을 알고 싶어 블로그에 HttpClient, RestTemplate, WebClient의 차이점에 대해 적어놓았다,
  • RestTemplate

✅ 논블로킹 (Non-blocking) vs 비동기 (Asynchronous)

항목비동기논블로킹
개념작업을 요청하고 바로 다음 코드 실행 (응답 기다리지 않음)리소스(쓰레드 등)를 점유하지 않음
초점시간(언제 실행될지 모름)리소스 사용 여부
예시콜백, Future, Promise, Monoread()호출 시 즉시 리턴
관련성비동기 처리는 대부분 논블로킹 방식으로 구현됨논블로킹이 항상 비동기인 건 아님

✅ 보일러 플레이트 → 롬복

  • 보일러 플레이트를 공부하다 롬복 개념과 비슷한 것이 있는 것 같아 어떤 관계가 있는지 알아보고 각각 개념에 대해서 자세히 정리해보았다.
  • BoilerPlate와 Lombok

✅ 패키지, 모듈, 라이브러리, 프레임워크, 스켈레톤, 템플릿

  • 한눈에 이 개념들에 대해 정리하고 싶어서 아래와 같이 만들었다!
  • 💬 “Spring 프레임워크로 만든 스켈레톤 프로젝트에서, controller 패키지에 로그인 모듈 넣고, 이메일 템플릿을 Thymeleaf로 렌더링, Jackson 라이브러리로 JSON 파싱한다.”

개념 비교표 (한눈에 보기)

용어개념 요약백엔드 개발자가 알아야 할 포인트
패키지클래스/파일들을 기능별로 묶은 폴더Java, Python 등에서 파일 구조 잡을 때 사용
모듈독립적으로 동작할 수 있는 기능 단위기능 분리 → 유지보수/테스트/재사용에 중요
라이브러리특정 기능을 수행하는 코드 집합필요할 때 꺼내 쓰는 도구 (예: Gson, Lodash)
프레임워크개발 구조를 잡아주는 뼈대 + 기능 제공정해진 방식대로 개발 (Spring, Express 등)
스켈레톤기본 구성만 갖춘 “빈 프로젝트”프로젝트 시작 시 빠르게 셋업 가능
템플릿반복되는 코드/구조를 미리 만들어둔 것보일러플레이트 줄이기 (이메일 템플릿, HTML 구조 등)

🔍 하나씩 간단하게 설명 + 예시

1. 패키지 (Package)

  • 📁 폴더처럼 코드 정리하는 단위
  • Java: com.myapp.controller, Python: myapp.utils
  • 구조적 관리, 이름 충돌 방지

👉 왜 중요?

→ 프로젝트가 커질수록 패키지 구조 잘 잡는 게 유지보수 핵심


2. 모듈 (Module)

  • 📦 독립적인 기능 단위
    (예: 사용자 인증 모듈, 결제 모듈)
  • 재사용 가능, 유닛 테스트 용이

👉 왜 중요?

→ 기능별로 나눠 개발하면 협업·유지보수가 쉬워짐


3. 라이브러리 (Library)

  • 📚 함수/클래스를 모아놓은 도구 상자
  • 내가 직접 작성하지 않고 가져다 쓰는 코드
  • 예: Gson (JSON 파싱), JUnit (테스트)

👉 왜 중요?

개발 효율성 급상승, 같은 기능 굳이 직접 안 만들어도 됨


4. 프레임워크 (Framework)

  • 🏗️ 일정한 구조 + 기능 제공
  • 개발자가 코드만 붙이면 동작함 (제어 흐름은 프레임워크가 담당 - IoC)
  • 예: Spring, Express, Flask

👉 왜 중요?

표준 구조로 팀 개발 가능, 학습 곡선 있지만 익히면 강력함


5. 스켈레톤 (Skeleton)

  • 🦴 초기 프로젝트 구조만 갖춘 상태 (빈 틀)
  • Spring Initializr가 생성해주는 구조 = 스켈레톤
  • 보일러플레이트만 있는 기본 프로젝트

👉 왜 중요?

→ 빠르게 프로젝트 시작할 수 있음


6. 템플릿 (Template)

  • 📄 반복 구조를 미리 만들어 놓은 코드 or UI
  • HTML 이메일 템플릿, JSP 템플릿, 코드 생성 템플릿 등

👉 왜 중요?

→ 개발 생산성 증가, 디자인/구조 통일