ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • JHipster 시리즈 6화 - JHipster 프로젝트 구조와 코드 흐름 분석하기
    언어 및 프레임워크/JHipster 2025. 5. 15. 19:35
    728x90

    JHipster로 생성된 Spring Boot + React 기반 프로젝트의 전체 디렉토리 구조, 주요 모듈, 코드 흐름을 실무 수준에서 상세하게 해부합니다. 실전 개발 시 반드시 알아야 할 핵심 구조 가이드.

     


     

    왜 프로젝트 구조를 이해해야 하는가?

     

    JHipster는 단순 템플릿이 아닙니다.

    자동으로 구성되는 백엔드 + 프론트엔드 + DevOps + 보안을 포함하는 완성형 프로젝트입니다.

     

    하지만 규모가 커지고 팀이 늘어나면 구조를 이해하고, 커스터마이징할 수 있는 역량이 핵심 경쟁력이 됩니다.

     

    이번 글에서는 실무 관점에서 JHipster 프로젝트의 전체 구조와 코드 흐름을 상세하게 분석합니다.

     


     

    JHipster 전체 구조 (Monolith 기준)

    ├── src/
    │   ├── main/
    │   │   ├── java/               → Spring Boot 백엔드
    │   │   ├── resources/          → 설정파일, 메시지, SQL
    │   │   └── webapp/             → React 프론트엔드
    │   └── test/                   → 테스트 코드
    ├── build.gradle or pom.xml     → 빌드 도구
    ├── package.json                → 프론트 의존성
    ├── .yo-rc.json                 → JHipster 설정 파일
    ├── Dockerfile, docker-compose/ → 컨테이너 설정
    └── README.md

     


     

    백엔드(Spring Boot) 구조

     

     

    1. 엔트리 포인트

    src/main/java/com/example/demo/DemoApp.java

     

    • Spring Boot Application 시작 지점
    • @SpringBootApplication으로 모든 설정 포함

     

     

    2. 핵심 패키지

    패키지설명

    config Spring Security, Database, Cache 설정
    domain Entity 클래스 (JPA)
    repository JPA Repository (데이터 접근)
    service Business Logic
    web.rest REST Controller
    security JWT, OAuth2 보안 설정

     


     

    JHipster 표준 코드 흐름

    Request → REST Controller → Service → Repository → DB

    예시:

    @RestController
    @RequestMapping("/api/books")
    public class BookResource {
        private final BookService bookService;
    
        @GetMapping
        public List<Book> getAllBooks() {
            return bookService.findAll();
        }
    }

     


     

    3. Entity 생성 예시

    @Entity
    @Table(name = "book")
    public class Book {
        @Id
        @GeneratedValue
        private Long id;
    
        @NotNull
        private String title;
    
        private String author;
    }

    JDL → Entity → Repository + REST + Front 자동 생성 구조입니다.

     


     

    프론트엔드(React) 구조

    src/main/webapp/app/
    ├── account/          → 로그인, 회원가입
    ├── admin/            → 관리 기능
    ├── entities/         → CRUD Entity 화면
    ├── shared/           → 공통 컴포넌트
    ├── modules/          → 커스터마이징 페이지 권장 위치
    ├── app.tsx           → 전체 Router 설정
    ├── config/           → API URL, i18n 등 설정

     

    라우팅 구조

    <Route path="/entity/book" element={<Book />} />
    <Route path="/account/login" element={<Login />} />

     

    • react-router-dom 기반의 SPA 라우팅
    • Redux Toolkit + Axios로 API 호출

     


     

    DevOps 및 기타 설정 파일

    파일명용도

    .yo-rc.json JHipster 생성 옵션 저장
    Dockerfile Application Docker 이미지 빌드
    docker-compose/ DB, Keycloak, Elastic 등 연동 설정
    application-dev.yml 개발 환경별 Spring Boot 설정
    application-prod.yml 운영 환경 설정
    package.json 프론트 의존성 관리
    build.gradle/pom.xml 백엔드 의존성 관리

     


     

    전체 코드 흐름 요약

    사용자 → React 페이지 → Redux Dispatch → Axios → REST API (Spring Controller) → Service → Repository → DB

    프론트와 백엔드는 완전히 분리되지만,

    JHipster에서는 도메인 모델과 API 스펙이 양쪽에서 동기화되어 있어 빠른 개발이 가능합니다.

     


     

    실전 팁: 실무에서 반드시 알아야 할 포인트

    항목설명

    Entity 확장 JDL → Entity 추가 → 코드 자동 생성
    Security 설정 SecurityConfiguration.java 참고
    Custom Module app/modules 폴더 생성 후 페이지 추가
    Dev 환경 분리 application-dev.yml 활용
    API 연동 수정 axios.ts 및 Redux Slice 구조 참고

     


     

    대형 프로젝트 사례

     

    한 SaaS 팀에서는 JHipster의 기본 구조를 유지한 채,

    다음과 같이 분리 전략을 사용했습니다:

     

    • 백엔드 → 별도 Git 저장소 분리 (Spring Domain 유지)
    • 프론트엔드 → Monorepo + Storybook + Tailwind 적용
    • DevOps → GitHub Actions + Docker + Kubernetes 배포

     

    결과적으로 초기 구축 기간 4주 → 1주로 단축

    유지보수 비용 약 35% 절감 효과를 얻었습니다.

     


     

    마치며 – JHipster는 조직화된 구조다

     

    JHipster의 가장 큰 장점은:

     

    • 작은 팀도 엔터프라이즈 수준의 표준 구조를 바로 쓸 수 있고
    • 커스터마이징 시에도 체계적으로 확장할 수 있다는 점입니다.

     

    이번 편을 통해 구조를 이해했다면,

    다음 단계에서는 마이크로서비스로 확장하거나 코드 생성기를 직접 확장하는 도전에 나설 수 있습니다.

     


     

    다음 화 예고

     

    JHipster 시리즈 7화 - 마이크로서비스 구조 전환 – Gateway와 Service Registry 실습

     

    모놀리식에서 Microservice로 구조를 전환하는 방법, Gateway 설정, Service Registry 활용법을 실습 중심으로 정리합니다.

    728x90
Designed by Tistory.