분류 전체보기 111

Apache Kafka 공식 문서 보면서 핵심 기능 정리

https://kafka.apache.org/intro?utm_source=chatgpt.com Apache KafkaApache Kafka: A Distributed Streaming Platform.kafka.apache.org“Kafka는 단순한 메시지큐가 아니라, 데이터의 중추 신경계다.”실시간 데이터가 생성되고, 저장되고, 처리되는 전 과정을 하나의 시스템으로 연결하는 이벤트 스트리밍 플랫폼이다. 1️⃣ 이벤트 스트리밍이란?이벤트 스트리밍(Event Streaming) 은데이터베이스, 센서, 모바일 앱, 클라우드, 소프트웨어 등에서 발생하는 **“사건(Event)”**을실시간으로 수집 → 저장 → 처리 → 전달 하는 기술이다.📌 쉽게 말해,“데이터를 한 번 저장하고 끝내는 게 아니라,계속 흐르..

Kafka 2025.11.10

🏢 아파트 실거래가 API 연동기 - 프록시 문제 해결

https://apt-trade-web.vercel.app/ Vite + React + TS apt-trade-web.vercel.app 1️⃣ 프록시를 쓴 이유서울시 공공데이터포털에서 제공하는 아파트 매매 실거래가 API를 React 프론트엔드에서 직접 불러오려 했습니다.하지만 두 가지 문제가 있었습니다.CORS 차단브라우저에서 바로 openapi.seoul.go.kr API를 호출하면 보안 정책 때문에 차단됨.API Key 노출발급받은 인증키를 그대로 프론트 코드에 넣으면, 배포 후 누구나 볼 수 있어 보안에 취약.👉 그래서 프론트 → 프록시 서버(Express) → 공공데이터 API 구조로 바꾸었습니다.프록시가 대신 API를 호출하고, 응답을 JSON으로 정리해 프론트로 전달하는 방식입니다.2️⃣..

[error 해결기] React 페이지네이션 시 이전 데이터가 화면에 남는 문제

🐞 문제 상황아파트 실거래가 API를 연동해 React로 리스트를 보여주는 프로젝트를 진행했다.API 응답은 정상적으로 내려오는데, 페이지 이동을 하면 이전 페이지 데이터가 한두 개씩 화면에 남아 있는 현상이 발생했다.API 응답 예시는 아래와 같다.{ "page": 2, "totalCount": 4737, "items": [ { "aptSeq": "11680-11200-0619-0000-20250923", "aptNm": "강남자곡 힐스테이트", "dealYmd": "2025-09-23", "dealAmountManwon": 128000, "excluUseAr": 84.39, "floor": 7 }, { "aptSeq..

서울시 열린 데이터 광장 공공데이터 Open API 신청 & 활용

공공데이터가 불이 나는 바람에 사용이 중단되었습니다ㅠㅠ따라서 Redis 적용을 다시 하려고 서울 공공데이터를 활용했습니다. 저는 서울 열린데이터 광장의 서울시 부동산 실거래가 정보 API를 활용합니다! 1. 회원가입, 로그인https://data.seoul.go.kr/ 열린데이터광장 메인데이터분류,데이터검색,데이터활용data.seoul.go.kr 2. 인증키 신청https://data.seoul.go.kr/dataList/OA-21275/S/1/datasetView.do 열린데이터광장 메인데이터분류,데이터검색,데이터활용data.seoul.go.kr 인증키 신청을 클릭합니다. 3. 가입 신청서 작성 활용할 목적에 맞게 신청서를 작성합니다.사용url이 없을 경우에 localhost를 적으면 됩니다. ..

Spring Boot + Redis로 아파트 실거래 조회 API 만들기

최근에 공공데이터포털 아파트 실거래 조회 API를 이용해서 프론트엔드에서 거래 내역을 보여주는 프로젝트를 진행했다.하지만 바로 부딪힌 문제는 속도와 중복 호출이었다.응답 속도정부 API 특성상 XML로 데이터를 내려주고, 이를 JSON으로 변환해야 했다.네트워크도 느리고 응답 처리 과정까지 거치니 사용자가 같은 조건으로 여러 번 조회할 때마다 매번 느린 응답을 받아야 했다.중복 호출유저가 같은 조건(예: "강남구 2025년 9월")으로 여러 번 검색할 경우,매번 정부 서버를 다시 치게 되어 불필요한 트래픽이 발생했다.최근 검색 내역 없음"내가 조금 전에 검색했던 조건"을 다시 보려면,유저가 직접 다시 입력해야 했다.👉 이 세 가지 문제를 해결하기 위해 Spring Boot + Redis 캐시를 도입하기..

국토교통부 아파트 실거래가 API 활용기

https://www.data.go.kr/data/15126468/openapi.do#/API%20%EB%AA%A9%EB%A1%9D/getRTMSDataSvcAptTradeDev API 기본 정보Endpoint:https://apis.data.go.kr/1613000/RTMSDataSvcAptTradeDevMethod: GET주요 Path:/getRTMSDataSvcAptTradeDev필수 파라미터:Name설명예시LAWD_CD지역코드 (법정동 10자리 중 앞 5자리)41117 (수원 영통구)DEAL_YMD계약년월 (6자리, YYYYMM)202509serviceKey공공데이터포털 인증키발급받은 키pageNo페이지 번호1numOfRows페이지당 데이터 수10실제 Request 예시GET https://ap..

😤 CORS? 403? API 호출 대참사 해결기

"로컬에서는 되는데 EC2에서는 왜 안 되지?"🧩 사건 개요클라우드에 React + Spring Boot 서비스를 배포하고 나서,프론트에서 API를 호출하자마자 403 Forbidden 오류가 발생했다.EC2 보안 그룹? 열려 있음백엔드 포트? 정상적으로 열려 있음API 주소? 맞게 입력함그런데도 계속 에러가 난다...❓ 왜 이런 문제가 발생했을까?📌 CORS란?CORS(Cross-Origin Resource Sharing)는 브라우저 보안 정책 중 하나로,출처(origin)가 다른 도메인 간 요청을 제한하는 기능이다.로컬에서는 localhost:3000 → localhost:8080으로 요청하니 괜찮음EC2에 배포 후에는 브라우저: http:// → API: http://:8081로 다른 포트 간 ..

AWS EC2 + Docker로 React & Spring Boot 실전 배포기

“진짜 유저가 접근 가능한 배포, 나도 해봤다”개발자 포트폴리오에서 코드 구현만큼 중요한 건, 서비스를 실제 운영 환경에 띄울 수 있는 배포 경험이다.그래서 이번에는 “로컬에서만 되는 게 아니라, 진짜 유저가 접근 가능한 서비스”를 만드는 걸 목표로 EC2에 프론트와 백엔드를 배포했다.보안 설정, 포트 바인딩, CORS 이슈 대응 등도 직접 다루며 실제 운영에서 고려해야 할 요소들을 경험할 수 있었다. ✨ 프로젝트 개요: Share & Reward 시스템이번 프로젝트는 상품 링크를 공유하고, 친구가 클릭하면 포인트를 받는 리워드 시스템을 구현한 것이다.실제 서비스를 운영하는 것처럼 EC2 서버에 배포하고, 브라우저에서 접근 가능한 형태로 구성해봤다.프로젝트명Share & Reward기술 스택React (..

AWS 2025.09.11

🚨 Spring Boot Kafka 개발 중 “No qualifying bean” 에러 해결기

Kafka 이벤트 발행/소비를 구현하면서,ShareController 에서 ShareEventProducer 를 주입받아 /shares 요청을 처리하도록 만들었다.하지만 실행 직후 아래와 같은 에러로 애플리케이션이 뜨지 않았다. 로그에 찍힌 에러:Parameter 0 of constructor in com.kafka.demo.ShareController required a bean of type 'com.kafka.demo.ShareEventProducer' that could not be found. 원인ShareController 는 com.kafka.demo.ShareEventProducer 타입을 의존.실제 클래스는 com.kafka.demo.producer.ShareEventProducer 에..

카프카(Kafka) 로컬 환경 구축과 기본 개념 정리

1. Kafka 기본 구성 요소📌 Producer메시지를 생성해서 Kafka 브로커(클러스터)에 전송하는 주체예: 회원가입 이벤트 발생 시 user.signed-up 메시지를 발행📌 BrokerKafka 서버 자체Producer가 보낸 메시지를 받아서 토픽(Topic) 에 저장하고 Consumer에게 전달여러 개의 Broker가 모여 클러스터를 구성📌 Topic메시지가 저장되는 카테고리예: demo.topic, user.signed-up, order.completed토픽은 여러 개의 파티션(Partition) 으로 나눠져서 분산 저장됨📌 Partition & OffsetPartition: 토픽을 여러 조각으로 나눈 단위 → 병렬 처리 가능Offset: 각 파티션에서 메시지가 기록되는 순번📌 Co..

Kafka 2025.09.05