728x90
반응형
SMALL

2026/01 21

[정부API] "개인회원은 사용할 수 없습니다": 공공데이터 Open API 사용기

본문배경: 설레는 마음으로 시작한 API 연동Career Lens 프로젝트를 진행하면서 채용정보를 실시간으로 제공하고 싶었습니다. 마침 한국고용정보원(워크넷)에서 제공하는 "채용정보 API"를 발견했고, 공공데이터포털에서 Open API 서비스라고 명시되어 있었습니다.생각: "오! 공공데이터면 누구나 쓸 수 있겠지?"현실: "개인회원은 사용할 수 없는 OPEN-API입니다."📋 상황 분석: 뭐가 문제지?1단계: 인증키 신청공공데이터포털(data.go.kr)에서 "한국고용정보원_워크넷 채용정보" API를 검색📌 API 정보- 제공기관: 한국고용정보원- API 유형: LINK- 데이터포맷: XML- 활용신청: 8,597명- 비용: 무료"무료이고, 활용신청이 8,000명 이상? 대박이네!"라고 생각했습니다..

IT/etc 2026.01.28

[Spring Security] 자동화된 봇 공격 분석 및 방어: 로그 노이즈 90% 제거하기

[Spring Security] 자동화된 봇 공격 분석 및 방어: 로그 노이즈 90% 제거하기 배경: 아직은 사용자가 나밖에 없는데.. 갑자기 증가한 로그 (귀신이 왔다갔나...)프로덕션 서버에 배포한 Career Lens 애플리케이션(example.com)의 Docker 컨테이너 로그를 확인했을 때, 이상한 패턴의 에러 메시지들이 대량으로 쌓여 있었습니다.2026-01-27T02:06:08.623+09:00 WARN --- Request method 'POST' is not supported2026-01-27T02:44:09.104+09:00 INFO Error parsing HTTP request headerjava.lang.IllegalArgumentException: Invalid char..

IT/java|Spring 2026.01.28

[Docker] 컨테이너 파일을 서버에 마운트하기 : Docker + Volume Mount

🎯 문제: 컨테이너의 파일을 호스트에서 어떻게 접근할까?일반적인 상황:Docker 컨테이너 내부└─ /app/crawler/main.py (크롤러 파일)호스트(서버) 시스템└─ /home/opc/career-lens/crawler/ (비어있음 😢)크론잡└─ python3 /home/opc/career-lens/crawler/main.py (파일이 없어서 실행 불가!)원인: 컨테이너와 호스트의 파일시스템이 분리되어 있음✨ 해결책: Docker Volume Mount (-v 옵션)docker run -v /app/crawler:/home/opc/career-lens/crawler \ career-lens:latest의미:컨테이너의 /app/crawler/↔️ 호스트의 /home/opc/career..

IT/etc 2026.01.27

[DB] Flyway 마이그레이션 실패 원인: desc 컬럼의 함정

[DB] Flyway 마이그레이션 실패 원인: desc 컬럼의 함정 🚨 문제 상황Spring Boot + Flyway + PostgreSQL 환경에서컨테이너 기동 시 다음과 같은 에러가 발생했다.ERROR: syntax error at or near "desc"SQL State : 42601Location : db/migration/V2__insert_initial_data.sqlLine : 10Flyway 마이그레이션 도중 SQL 문법 오류로 인해컨테이너가 정상적으로 기동되지 않는 상황이었다.📄 에러가 발생한 SQL (문제 코드)INSERT INTO common_code (type, code, name, desc, created_at, updated_at) VALUES ..

IT/DB 2026.01.26

[Flyway] spring-boot-starter-flyway vs flyway-core 차이 정리

[Flyway] spring-boot-starter-flyway vs flyway-core 차이 정리📌 배경Spring Boot 3.x 프로젝트에서 Flyway를 사용해PostgreSQL 마이그레이션을 적용하던 중, 아래와 같은 의존성 구성이 문제가 되었다.implementation 'org.springframework.boot:spring-boot-starter-flyway'기존에는 문제없이 동작하던 설정이었지만,Spring Boot 3.x + PostgreSQL 환경에서는 버전 충돌 및 DB 인식 오류가 발생했다.결국 다음과 같이 의존성을 변경했다.// ❌ 제거됨implementation 'org.springframework.boot:spring-boot-starter-flyway'// ✅ 추가됨i..

IT/DB 2026.01.26

[Flyway] Spring Boot에서 PostgreSQL 마이그레이션 자동화

[Flyway] Spring Boot에서 PostgreSQL 마이그레이션 자동화📌 목차Flyway란?프로젝트 환경구현 과정주요 학습 포인트실행 및 검증결론Flyway란?정의Flyway는 데이터베이스 스키마 버전 관리 및 마이그레이션 자동화 도구입니다. Git처럼 SQL 스크립트의 버전을 관리하고, 애플리케이션 시작 시 자동으로 데이터베이스 스키마를 최신 상태로 유지합니다.필요성✅ 버전 관리: DB 스키마 변경 이력을 코드로 추적✅ 자동화: 수동 SQL 실행 불필요 → 휴먼 에러 감소✅ 일관성: 모든 팀원이 동일한 DB 상태 유지✅ 배포 단순화: CI/CD 파이프라인에 자동 포함✅ 개발 효율성: 새로운 팀원도 자동으로 DB 초기화장점항목설명자동 마이그레이션애플리케이션 시작 시 자동 실행버전 추적모든 변경..

IT/DB 2026.01.26

[보안] Spring Boot HTTP→HTTPS 리다이렉트 완전정복

[보안] Spring Boot HTTP→HTTPS 리다이렉트 완전정복 개요이 글은 Spring Boot(백엔드)에서 HTTP → HTTPS 자동 리다이렉트를 구현하는 방법을 정리합니다.사용자가 http://your-domain.com으로 접속해도 자동으로 https://your-domain.com으로 이동하게 합니다.핵심: 사용자는 신경 쓸 필요 없이 자동으로 보안 연결로 이동합니다! 🔒목표✅ 모든 HTTP 요청(포트 80) → HTTPS(포트 443)로 자동 리다이렉트✅ Spring Boot에서 HTTP(80) + HTTPS(443) 동시 리스닝✅ 사용자 경험 개선 (자동 이동, 보안 경고 제거)✅ SEO 최적화 (Google HTTPS 우대)✅ 보안 강화 (중간자 공격 방지)전제도메인 → 서버 IP..

IT/java|Spring 2026.01.25

[SSL] Let's Encrypt 무료 인증서로 HTTPS 자동갱신 구축하기: Certbot + Docker 완전 자동화 가이드

[SSL] Let's Encrypt 무료 인증서로 HTTPS 자동갱신 구축하기: Certbot + Docker 완전 자동화 가이드[SSL] Let's Encrypt 무료 인증서로 HTTPS 자동갱신 구축하기: Certbot + Docker 완전 자동화 가이드개요이 글은 Let's Encrypt 무료 SSL 인증서를 Certbot으로 발급하고, Docker 볼륨 마운트를 통해 이미지 재빌드 없이 자동갱신하는 방법을 정리합니다.Spring Boot 백엔드는 application.properties에 설정된 인증서 경로를 통해 자동으로 HTTPS를 처리하며, Systemd 타이머가 매달 정기적으로 인증서를 갱신합니다.목표✅ Let's Encrypt 무료 SSL 인증서 발급✅ 포트 80 (HTTP) → 포트 4..

IT/etc 2026.01.22

[Next.js] 별도 FE 서버 없이 기존 백엔드에 웹 붙이기

FE 서버 없이 Spring Boot 하나로 PC·모바일 웹까지 배포하기웹 서비스를 개발하면서 다음과 같은 요구사항이 있었다.PC 웹과 모바일 웹을 모두 지원하고 싶다FE용 서버를 별도로 운영하고 싶지 않다기존 Spring Boot 프로젝트 안에서 FE 수정까지 함께 배포하고 싶다배포 단위를 하나로 유지하고 싶다이 글에서는 Spring Boot 프로젝트 하나만 배포해도FE와 BE가 함께 반영되는 구조를 어떻게 만들었는지 정리한다.1. 전체 구조 요약이번 구조의 핵심은 단순하다.FE는 빌드 결과물만 사용하고실제 서비스는 Spring Boot가 담당한다구조는 다음과 같다.FE: Next.js (Static Export)BE: Spring Boot배포 단위: 하나의 Spring Boot 애플리케이션즉, 별도의..

IT/Next.js 2026.01.21

[Github Copilot] java.lang.IllegalArgumentException: Argument for @NotNull parameter 'fileType'

[Github Copilot] java.lang.IllegalArgumentException: Argument for @NotNull parameter 'fileType' 인텔리제이(IntelliJ IDEA)를 사용하다가 갑자기 GitHub Copilot Chat에서 발생하는 java.lang.IllegalArgumentException 오류로 당황하셨을 분들을 위해 해결 방법을 정리해 드립니다.[오류 해결] IntelliJ x GitHub Copilot Chat: "Argument for @NotNull parameter 'fileType'"최근 GitHub Copilot Chat 기능을 사용하려 할 때 아래와 같은 에러 로그와 함께 기능이 멈추는 현상이 보고되고 있습니다.java.lang.Illeg..

IT/AI 2026.01.20
728x90
반응형
LIST