
📌 이 글은 WingITs의 기술 구조 정리입니다. 이 프로젝트가 어떻게 시작되었는지 궁금하시다면
👉 개발일지 WingITs #1~#6
제가 개발한 노트북 관리 시스템 WingITs는 Spring Boot 기반의 MVC 아키텍처로 설계되었습니다.
프론트엔드는 Thymeleaf를 사용하여 렌더링되며, 사용자 역할에 따라 학생과 관리자 기능을 명확하게 분리하였습니다.
인증과 보안은 Spring Security를 기반으로 구현했고, Google/Kakao OAuth2 로그인도 지원합니다. 특히 관리자 계정은 승인 절차를 거쳐야 로그인할 수 있도록 설정하여 보안을 강화했습니다.
운영 환경은 Docker 기반으로 구성되어 있으며, 개발 초기에는 H2 DB를 사용하다가 배포 단계에서 MySQL로 전환하였습니다. 또한 초기 데이터 세팅을 위해 Excel 업로드 기능도 구현했습니다 (Apache POI).
| 분류 | 사용 기술 | 목적 / 기능 |
|---|---|---|
| 백엔드 프레임워크 | Spring Boot | 전체 애플리케이션 구성 (MVC 구조 포함) |
| 템플릿 엔진 | Thymeleaf | 서버사이드 렌더링 기반 HTML 화면 구성 |
| 인증 / 보안 | Spring Security | 로그인, 로그아웃, 권한 제어 (학생 / 관리자) |
| 소셜 로그인 | Spring Security OAuth2 | Google/Kakao 계정 연동 |
| 비밀번호 암호화 | BCrypt | 비밀번호 해시 처리 |
| DB 연동 | Spring Data JPA | Entity 기반 CRUD 처리 |
| ORM 구현체 | Hibernate | SQL 없이 객체 지향적으로 DB 처리 |
| 운영 DB | MySQL | 실 서비스 운영용 RDBMS |
| 개발용 DB | H2 | 개발/테스트용 가벼운 DB |
| Excel 업로드 | Apache POI | 초기 데이터 입력용 .xlsx 처리 |
| 배포 환경 | Docker | MySQL 컨테이너 실행, 환경 일관성 확보 |
| 글로벌 데이터 처리 | @ControllerAdvice | 로그인 사용자 정보 전역 전달 (Thymeleaf) |
spring-boot-starter-web 하나만 추가해도 필요한 웹 기능이 자동 설정됨 객체지향적으로 DB를 다룰 수 있다?
: 데이터베이스의 테이블을 자바 객체로 매핑해서, 마치 자바 객체를 다루듯 데이터를 조작할 수 있다는 의미. 즉, 개발자는 SQL쿼리를 직접 작성하는 수고를 덜고, 자바의 클래스를 통해 데이터베이스 레코드를 다룰 수 있음.
👉 코드가 직관적, 재사용성 증가
반복적인 CRUD 로직을 줄일 수 있다?
: 기본적인 데이터 조작 작업들(ex. 저장, 조회, 수정, 삭제 등)이 메서드 호출만으로 가능해지기 때문에 반복적인 코드를 줄이고 생산성을 높일 수 있음.
.xlsx 엑셀 데이터를 Java에서 쉽게 처리 가능 이처럼 WingITs 프로젝트는 Spring Boot를 중심으로 보안, 인증, 데이터 연동, 배포 등 실제 서비스를 운영하기 위한 필수 요소들을 직접 설계하고 구현한 경험이 집약된 시스템입니다.
이후 포스트에서는 아래 주제들을 다룰 예정입니다:
아키텍처를 설계할 때 이 글이 도움이 되었으면 좋겠습니다. 🙌