[GDSC] Docker Compose! 다중 컨테이너 오케스트레이션
이전 글에서 Node.js 백엔드, React 프론트엔드, MongoDB 데이터베이스를 각각 독립된 컨테이너로 띄워서 하나의 애플리케이션처럼 동작하게 만들었다. 백엔드 하나, 프론트엔드 하나, 데이터베이스 하나. 겉으로 보면 단 세 개지만, 이걸 전부 도커 명령어로 관...
이전 글에서 Node.js 백엔드, React 프론트엔드, MongoDB 데이터베이스를 각각 독립된 컨테이너로 띄워서 하나의 애플리케이션처럼 동작하게 만들었다. 백엔드 하나, 프론트엔드 하나, 데이터베이스 하나. 겉으로 보면 단 세 개지만, 이걸 전부 도커 명령어로 관...
Java에서 컬렉션을 돌릴 때 제일 먼저 떠오르는 건 아마 대부분 for 문일 거다. 본인도 가장 먼저 떠오르는 건 for문이다! 그런데 Java 8 이후에는 같은 일을 Stream API로도 할 수 있다. 이 글에서는 우선 for와 stream이 각각 어떤 식으로 작...
조회 기능을 만들 때 가장 먼저 떠올려야 하는 것이 있다. 바로 페이징이다. 글이 몇 개 안 될 때는 상관없지만, 서비스가 조금만 커져도 한 번에 수천, 수만 개의 데이터를 통째로 내려주는 순간, 유저는 로딩 화면만 멍하니 바라보게 된다. 쿼리도 느려지고, 네트워크 트...
Swagger는 이미 프로젝트를 하면서 종종 써왔다. API만 만들면 자동으로 문서 화면이 딸려 나오고, 브라우저에서 바로 “Try it out”을 눌러 요청도 쏴볼 수 있는 도구였다. 그래서 나한테 “API 문서화”라고 하면 자연스럽게 Swagger가 먼저 떠올랐다....
예를 들어 이런 상황을 떠올려보자. Member 엔티티에 여러 개의 컬럼이 있는데... email, nickname, age, status, createdAt, updatedAt… 서비스 코드에서 아래처럼 딱 한 줄만 바꿨다! 분명 건드린 건 nickname 하나뿐인데...
보통 실제 웹 서비스는 하나의 컨테이너로 끝나지 않는다. 강의에서처럼 데이터베이스, 백엔드, 프론트엔드 세 덩어리로 나누는 구조를 흔히 볼 수 있다. 데이터 저장소: MongoDB 백엔드 API: Node.js + Express 기반 REST API 프론트엔드: Rea...
이전까지는 이미지, 컨테이너, 볼륨을 다루며 “컨테이너 내부의 데이터”에 집중했다. 그런데 실제 서비스 환경에서는 컨테이너가 하나만 존재하는 경우는 거의 없다. Node.js 서버, MongoDB 데이터베이스, Redis 캐시... 이 세 가지를 전부 같은 컨테이너 안...
JPA만으로도 기본적인 CRUD는 해결할 수 있다. 그러나 서비스가 확장되고 복잡한 검색 조건이 필요해지면, 결국 직접 쿼리를 작성해야 하는 순간이 온다. 이를 위해 우리는 JPQL을 사용해 왔다. 다만 JPQL은 문자열 기반으로 쿼리를 작성하기 때문에, 오타 하나로 ...