[개발 일기] 2025.04.27 - Kafka + H2 포트 충돌
·
개발 일기
💡 개요 오늘은 H2와 Kafka를 동시에 실행했을 때, 에러가 발생하는 이유를 정리해 보자. 🛠️ Kafka, H2 포트 Kafka의 기본 포트 번호는 9092이다. H2의 기본 포트 번호는 8082이다. 그런데 왜 둘을 함께 실행시키면 에러가 발생할까? 그것은 바로 H2는 8082 포트뿐만 아니라 9092 포트도 사용하기 때문이다. H2의 기본 포트는 웹 콘솔의 포트번호를 의미한다. 그렇기 때문에 8082로 접근하면 웹에서 콘솔로 접근할 수 있다. 하지만 TCP Server 즉, DB 접속용 포트는 따로 있다. 해당 포트가 9092이다. 위 이미지는 H2 콘솔에 접속하는 화면인데, 보다시피 JDBC URL에 tcp로 H2 데이터베이스에 접근하는 것을 알 수 있다. 그렇기 때문에 기..
[개발 일기] 2025.04.26 - Collections.synchronizedXXX() vs Concurrent Collections
·
개발 일기
💡 개요 오늘은 Collection 자료형의 동기화 환경을 제공하는 기술에 대해 정리해보자. 🛠️ Collections.synchronizedXXX() Java에서는 Collections 유틸리티 클래스에서 제공하는 synchronizedXXX() 메서드를 통해 동기화된 컬렉션을 생성할 수 있다. 예를 들어 Collections.synchronizedList()는 List에 대한 synchronized wrapper를 반환한다. 예시 코드는 다음과 같다. List syncList = Collections.synchronizedList(new ArrayList());syncList.add("apple");syncList.add("banana");// 읽기 작업 시에도 외부에서 동기화 필요 (It..
[개발 일기] 2025.04.25 - 맥북 쿠버네티스 서비스 접근
·
개발 일기
💡 개요 오늘은 맥북(M1)으로 쿠버네티스의 서비스에 접근하는 방법에 대해 정리 해보자. 🛠️ 쿠버네티스 서비스 접근 보통 다음 명령어를 사용해 k8s의 Pod과 Service를 실행하면 클러스터 내부에 접근이 가능한 것으로 알 고 있다. kubectl apply -f 실행시킬_Pod_or_Service.yml 하지만 이상하게 내 맥북에선 이렇게 해도 접근이 안된다. 이럴 때는 다음 명령어를 사용하면 Minikube가 자동으로 포트 포워딩을 설정해주고 브라우저를 통해 서비스에 접근할 수 있게 된다. minikube service 접근할_서비스명
[개발 일기] 2025.04.24 - MongoDB의 쓰기 속도가 빠른 이유?
·
개발 일기
💡 개요 오늘은 MongoDB의 쓰기 속도가 빠른 이유에 대해 정리해 보자. 🛠️ MongoDB 쓰기 작업 MongoDB가 MySQL보다 빠르게 작업을 수행할 수 있는 이유는 간단하다. 바로 트랜잭션 처리의 엄격성이 MySQL보다 떨어지기 때문이다. 우리가 아는 트랜잭션의 원칙은 ACID를 기반으로 이루어졌다. Atomicity (원자성) : 모든 작업이 모두 성공하거나, 모두 실패해야 함Consistency (일관성) : 트랜잭션 전 후의 데이터가 항상 유효한 상태여야 함Isolation (격리성) : 동시에 실행되는 트랜잭션은 다른 트랜잭션에게 영향을 주어선 안됨Durability (지속성) : 트랜잭션 종료 후 결과는 영구적으로 반영되어야 함 하지만 MongoDB는 이러한 전통적인 ACI..
[Spring] MySQL, MongoDB 전략 패턴
·
Spring
현재 진행 중인 ‘스킨 판매 플랫폼’에서는 판매자에게 문의할 때 사용되는 채팅이 모두 MySQL에 저장된다. 하지만 채팅이라는 기능의 특성을 생각해 봤을 때, 자주 INSERT 작업이 실행되는 기능이다. 그렇기 때문에 MySQL은 적합하지 않을 수 있다. 이 과정에서 고려한 두 가지 방안은 다음과 같다. Redis에 저장 후, 일정 시간 이후 or 일정 채팅 개수를 초과한 경우 Batch를 사용해 MySQL에 채팅 데이터 저장채팅 데이터만 MongoDB에 저장 여기서 난 두 번째 방안을 적용하기로 했다. 그 이유는 아직까지 하나의 DB를 사용하다가, 한 프로젝트에서 다른 DB를 적용한 기억이 없기 때문이다. ⚙️ MongoDB MongoDB란 대표적인 NoSQL DB로 채팅 데이터를 저장하는..
[개발 일기] 2025.04.23 - 왜 두 번씩?
·
개발 일기
💡 개요 React를 사용하다 보면 모든 요청이 두 번씩 요청되는 것을 볼 수 있다. 그 이유가 뭘까? 🛠️ React가 두 번씩 요청을 보내는 이유 이유는 아래 URL에 접속하면 알 수 있다. How to Upgrade to React 18 – ReactThe library for web and native user interfacesreact.dev 결론부터 말하자면 별 상관 없다. React 18에서는 Strict Mode가 활성화되어 컴포넌트의 리렌더링을 강제로 두 번 수행하기 때문인데, 이는 애플리케이션의 안정성을 위한 메커니즘으로, 실제 배포 환경에서는 한 번만 요청이 발생한다. 따라서 개발 환경에서만 요청이 두 번 발생한다고 걱정할 필요는 없다. 그리고 현재 환경이 개발 환경인..