레디스: Redis
스프링 부트 CKEditor 1 - 실습 환경 및 버전 구성
https://youtu.be/KDSJFSp4c4I?si=NLSb7jB4-CY78Xte 이번 글에서는 Spring Boot에서 CKEditor 5를 연동하여 게시글 + 이미지 업로드 기능을 구현하기 위한 실습 환경을 정리한다.
핵심 목표는 단순하다.
“에디터 → 이미지 업로드 → S3 저장 → DB 저장” 흐름을 완성하는 것
스프링 부트 CKEditor 1 - 실습 환경 및 버전 구성
- 스프링 부트 CKEditor 1 - 실습 환경 및 버전 구성
이번 시리즈의 최종 목표
이 시리즈는 단순 에디터 연동이 아니다.
👉 최종적으로 구현하는 구조:
사용자 → CKEditor → Spring Boot → S3 (이미지)
↓
DB (게시글)
즉,
- 텍스트: DB 저장
- 이미지: S3 저장
- 에디터: CKEditor
👉 이 3개를 연결하는 것이 핵심이다.
1. 전체 기술 스택 구성
이번 실습에서 사용하는 기술 스택은 다음과 같다.
Backend
- Spring Boot 3.1.2
- Spring Framework 6.x
- Java 17
Build Tool
- Gradle
Database
- AWS RDS (MariaDB)
Storage
- AWS S3 (이미지 저장)
Frontend Editor
- CKEditor 5 (CDN 방식)
Template Engine
- Mustache
IDE
- IntelliJ IDEA
2. 왜 이 조합이 “최적의 실습 환경”인가?
이 부분이 가장 중요하다. 단순 나열이 아니라 선택 이유를 이해해야 한다.
1) Spring Boot 3 + Java 17
- Spring Boot 3부터 Java 17 필수
- 최신 생태계 (Jakarta EE 기반)
👉 실무 기준 최신 표준
2) Gradle 선택 이유
- 빠른 빌드 속도
- 멀티 모듈에 유리
- 최근 트렌드
👉 Maven보다 확장성과 생산성 측면에서 유리
3) CKEditor를 CDN으로 사용하는 이유
<script src="https://cdn.ckeditor.com/..."></script>
장점:
- 설치 필요 없음
- 버전 관리 간단
- 빠른 적용
👉 초기 실습 및 MVP에 최적
4) DB는 RDS, 이미지는 S3
이 구조가 핵심이다.
❌ 잘못된 방식
- 이미지 → DB 저장 (BLOB)
✅ 올바른 방식
- 이미지 → S3
- 이미지 URL → DB 저장
👉 이유:
- DB 부하 감소
- 확장성 확보
- CDN 연계 가능
3. 전체 아키텍처 흐름
이걸 이해하면 이후 실습이 훨씬 쉬워진다.
게시글 저장 흐름
1. 사용자 글 작성 (CKEditor)
2. 이미지 업로드 요청 발생
3. Spring Boot 서버로 요청
4. S3 업로드
5. 이미지 URL 반환
6. 에디터에 삽입
7. 최종 글 → DB 저장
핵심 포인트
- 이미지 업로드는 “중간 처리”다
- DB에는 실제 이미지가 아니라 URL만 저장
4. CKEditor 5 선택 이유
CKEditor 5는 단순한 텍스트 에디터가 아니다.
특징:
- 모듈 기반 구조
- 커스터마이징 용이
- 이미지 업로드 API 지원
👉 특히 중요한 기능:
Custom Upload Adapter
이걸 이용해서:
- CKEditor → Spring Boot → S3
흐름을 연결한다.
5. 실습 진행 순서 (로드맵)
이번 시리즈는 다음 순서로 진행된다.
1단계: Spring Boot 환경 구성
- 프로젝트 생성
- JPA 설정
- DB 연결
2단계: CKEditor 5 연동
- CDN 적용
- 에디터 출력
3단계: 게시글 저장
- form → controller
- DB 저장
4단계: 게시글 수정/조회
- DB → 화면
- 데이터 바인딩
5단계: 이미지 업로드 기능
👉 가장 중요한 단계
- CKEditor 업로드 요청 처리
- S3 업로드
- URL 반환
6. 실무 관점 핵심 포인트
이 파트는 면접에서도 자주 나온다.
1. 이미지 저장 전략
- DB 저장 ❌
- S3 저장 + URL 저장 ✅
2. 에디터는 “UI일 뿐”
- 실제 로직은 서버에서 처리
- 보안, validation, 저장 책임은 backend
3. 업로드는 비동기 이벤트
- 글 저장과 이미지 업로드는 별도 흐름
4. 장애 대응
- S3 업로드 실패 시?
- URL 깨진 경우?
- 이미지 orphan 문제?
👉 반드시 고려해야 한다
7. 이 구조가 중요한 이유
이 구조는 단순 블로그 기능이 아니다.
👉 실제 서비스에서 그대로 사용된다:
- 커뮤니티
- CMS
- 쇼핑몰 상품 설명
- 관리자 시스템
정리
이번 글의 핵심을 한 줄로 정리하면:
Spring Boot + CKEditor + S3 구조는 “텍스트와 미디어를 분리하는 아키텍처”다
핵심 요약
- CKEditor → 사용자 입력
- Spring Boot → 처리
- S3 → 이미지 저장
- DB → 텍스트 + URL 저장