Skip to content
@LGCNS-FINAL-LGCMS

LGCMS

LGCMS

Learning & GenAI-based Content Management System

강의 제작·업로드·스트리밍·학습 관리·결제 전 과정에 GenAI 기반 진단과 피드백을 결합한 차세대 LCMS 플랫폼

Period Duration Team Services Requirements WBS

Organization · Frontend · Infrastructure


LGCMS product experience showcase

프로젝트 소개 · 화면 미리보기 · 핵심 기능 · 기술 흐름 · 아키텍처 ·


Overview

LGCMS는 기존 온라인 학습 환경에서 반복적으로 발생하는 세 가지 문제를 해결하기 위해 개발했습니다.

Problem LGCMS Solution Expected Value
학습자가 자신의 수준과 다음 학습 방향을 판단하기 어려움 AI 레벨 테스트와 개인별 학습 리포트 강점·약점과 다음 학습 경로를 정량적으로 확인
강의 시청 중 생긴 질문을 즉시 해결하기 어려움 강의 자료 기반 RAG 튜터 챗봇 현재 수강 중인 강의 맥락에 근거한 실시간 질의응답
강사가 수강생 반응과 강의 품질을 파악하기 어려움 강사 대시보드와 AI 개선 리포트 수익·수강·완강 지표 및 리뷰·질문 기반 개선 방향 제공

단순히 AI 기능만 추가한 것이 아니라, 강의 등록 → 원본 업로드 → HLS 인코딩 → CDN 스트리밍 → 학습 진도 관리 → 결제 → 분석과 피드백까지 이어지는 LCMS 전체 파이프라인을 구현했습니다.


Project at a Glance

Metric Result Metric Result
Development period 2025.07.04 - 2025.09.11 Team 8 members
Domain services 13 Functional requirements 91
WBS implementation tasks 263 completed Main AI modules 4
Cloud region AWS ap-northeast-2 Project duration 10 weeks

Value by User

Student Lecturer Platform
AI 기반 역량 진단과 맞춤형 리포트 수익·수강·완강 지표 대시보드 도메인별 독립 배포가 가능한 MSA
강의 시청 중 실시간 학습 Q&A 리뷰·질문 기반 AI 개선 피드백 Kafka 기반 비동기 처리
진도·메모·퀴즈·Q&A 통합 학습 강의·강좌 등록과 콘텐츠 관리 관측성, 오토스케일링, GitOps
강의 탐색·장바구니·결제 데이터 기반 강의 품질 개선 S3·CloudFront 기반 콘텐츠 전달

Product Experience

README에서 제품의 실제 완성도를 빠르게 확인할 수 있도록 주요 프론트엔드 화면을 사용자 여정 순서로 구성했습니다.

1. 강의 탐색과 학습

강의 탐색 메인 화면
강의 탐색 — 검색, 기술 태그, 강의 카드와 사용자 메뉴를 한 화면에 구성
강의 스트리밍 화면
강의 시청 — 차시 목록, 영상 재생, 해상도 전환과 학습 도구를 통합

2. AI 레벨 테스트와 맞춤형 리포트

AI level test user journey

  1. 사용자가 기술 카테고리를 선택합니다.
  2. 하 3문제, 중 4문제, 상 3문제로 구성된 10개 서술형 문제를 풉니다.
  3. 비동기 채점 완료 후 점수, 개념별 이해도, 강점·약점, 종합 피드백과 다음 학습 추천을 확인합니다.
레벨 테스트 개별 화면 보기
레벨 테스트 기술 선택 레벨 테스트 문제 풀이 레벨 테스트 결과 리포트

3. 강의 자료 기반 AI Tutor

AI 튜터 챗봇 화면 강의를 벗어나지 않는 학습 Q&A

강사가 등록한 PDF 자료를 임베딩하고, 현재 강의 ID 범위에서 관련 청크를 검색합니다. 수강생은 영상을 시청하면서 별도 페이지 이동 없이 질문하고, 강의 내용에 근거한 답변을 받을 수 있습니다.

강의 PDF → Kafka → pgvector → RAG → Tutor Response

4. 강사 대시보드와 AI 개선 리포트

강사 분석 대시보드
정량 분석 — 수익 분포, 강의 완강률, 수강률 구간별 학생 수와 시계열 지표
강사 AI 피드백 리포트
정성 분석 — 수강평과 질문 데이터를 기반으로 장점·단점·개선 방향 생성

5. 강의 제작과 콘텐츠 업로드

강의 등록 및 콘텐츠 업로드 화면

강사는 강의 기본 정보와 강좌 구성을 입력하고 영상·PDF 자료를 업로드할 수 있습니다. 업로드된 영상은 비동기 인코딩 파이프라인을 거쳐 HLS 콘텐츠로 제공되며, PDF는 AI Tutor 검색 문서로 사용됩니다.


Core Features

Standard LCMS

  • Google 로그인, JWT 인증, 역할 기반 사용자 관리
  • 강의 검색·상세·등록·수정과 강좌 구성
  • 강의 수강 신청, 진도 저장, 메모와 퀴즈
  • 학생 질문·강사 답변, 수강평과 별점
  • 장바구니, 단건·묶음 결제, 구매 상태 관리
  • Kafka 이벤트와 SSE 기반 실시간 알림
  • FFmpeg 기반 HLS 다중 비트레이트 인코딩과 CDN 스트리밍

GenAI Experience

Module Input Processing Output
AI Level Test 기술 카테고리와 서술형 답변 난이도별 문제 구성, 비동기 LLM 채점, 개념 분석 점수, 강점·약점, 종합 피드백, 다음 학습 추천
AI Tutor 강의 PDF와 수강생 질문 Kafka 임베딩 이벤트, pgvector 검색, RAG, 대화 메모리 강의 내용에 근거한 학습 답변
Guide Bot 서비스 이용 질문 FAQ 임베딩, Query Expansion, Re-ranking 안내 답변, 관련 이미지와 페이지 URL
Lecturer Consulting 강의 지표, 수강평, Q&A Airflow·Spring Batch 집계, Bedrock 분석 대시보드와 강의 개선 리포트

Frontend Engineering

프론트엔드는 학생·강사·시스템 기능을 하나의 애플리케이션에서 제공하되, 도메인별 상태와 화면 책임을 분리하는 방향으로 구성했습니다.

Concern Implementation Effect
UI 개발 React 19, TypeScript, 공통 컴포넌트 타입 안정성과 화면 재사용성 확보
Build environment Vite 빠른 개발 서버와 HMR 기반 개발 생산성 향상
Global state Redux Toolkit, 도메인별 Slice 학생·강사·시스템 상태를 예측 가능한 단방향 흐름으로 관리
State persistence Redux Persist, localStorage 새로고침 이후에도 로그인·학습 관련 상태 유지
Styling Styled Components, ThemeProvider 색상·폰트·간격 토큰을 공통화해 UI 일관성 유지
API communication Axios 기반 API 레이어, Store 참조 구조 인증 오류·토큰 갱신 등 공통 처리 확장 가능
Realtime UI SSE 알림 인코딩·AI 채점 등 비동기 작업 완료 상태를 사용자에게 전달
Quality ESLint 코드 스타일 통일과 잠재 오류 사전 탐지

Frontend Scope

  • 메인·검색·강의 상세·강의 시청
  • 강사 강의·강좌 등록과 콘텐츠 관리
  • 로그인·회원가입·학생 수강 화면
  • AI 레벨 테스트와 결과 리포트
  • 수강평·Q&A·장바구니·결제
  • 가이드 봇·AI Tutor·SSE 알림 UI
  • 강사 대시보드와 AI 강사 리포트

Key Technical Flows

AI Level Test

사용자가 답안을 제출하면 HTTP 요청을 장시간 점유하지 않고 즉시 응답한 뒤, 백그라운드에서 채점과 리포트 생성을 수행합니다.

답변 저장
→ 문항별 LLM 채점
→ 핵심 개념 이해도 분석
→ 강점·약점·추천 학습 방향 생성
→ 종합 리포트 저장
→ Kafka 완료 이벤트 발행
→ SSE 사용자 알림

LLM 출력은 그대로 저장하지 않고 점수 범위와 응답 구조를 애플리케이션 레벨에서 검증해 비정상 응답으로 인한 리포트 생성 실패를 방지했습니다.

AI Tutor RAG

강의 PDF 업로드
→ S3 / CloudFront 저장
→ Kafka 임베딩 이벤트
→ PDF 파싱·청크 분할
→ Titan Text Embeddings v2
→ PostgreSQL pgvector 저장
→ 강의 ID 기반 유사도 검색
→ Claude 3 Haiku 응답
→ Valkey 대화 히스토리 저장
  • 강의 ID를 검색 조건에 포함해 다른 강의의 자료가 검색 결과에 섞이지 않도록 분리했습니다.
  • pgvector의 HNSW 인덱스와 Cosine Distance를 사용합니다.
  • 사용자·강의별 대화 기록을 Valkey에 보관해 멀티턴 질의응답을 지원합니다.

Guide Bot

서비스 FAQ와 안내 데이터 임베딩
→ 사용자 질문 Query Expansion
→ 벡터 유사도 검색
→ Re-ranking
→ 안내 답변 + 관련 이미지 + 이동 URL 반환

일반적인 생성형 답변이 아니라 실제 서비스 이용 흐름을 안내하는 것이 목적이므로, 답변과 함께 관련 화면 이미지와 페이지 URL을 반환하도록 구성했습니다.

Video Upload & HLS Streaming

flowchart LR
    A[Lecturer Upload] --> B[Upload Service]
    B --> C[(S3 Original File)]
    B --> D[Kafka Encoding Event]
    D --> E[Streaming Service]
    E --> F[FFmpeg Transcoding]
    F --> G[HLS Master Playlist]
    F --> H[Multi-bitrate Segments]
    G --> I[(S3 Encoded Content)]
    H --> I
    I --> J[CloudFront CDN]
    J --> K[Adaptive Streaming Player]
Loading

FFmpeg로 영상을 여러 비트레이트의 HLS .m3u8 플레이리스트와 세그먼트로 변환합니다. 플레이어는 네트워크 상태에 따라 화질을 전환하고, CloudFront는 세그먼트를 캐싱해 원본 서버 부하를 줄입니다.

Lecturer Dashboard & AI Report

Airflow Daily DAG
→ Spring Batch 통계 집계
→ 강의별 집계 테이블 저장
→ 대시보드 조회
→ 리뷰·질문 데이터 분석 요청
→ Bedrock 강의 개선 리포트 생성
  • Airflow가 매일 자정 통계 집계 Job을 실행합니다.
  • Spring Batch가 수익 분포, 완강률, 수강률 구간별 학생 수를 미리 계산합니다.
  • Java 21 Virtual Threads와 Batch Writer 최적화로 대량 집계 처리 시간을 단축했습니다.
  • 리포트 생성에 약 20~40초가 걸리는 구간에는 Redisson 분산 락을 적용해 동일 요청의 중복 LLM 호출과 토큰 낭비를 방지했습니다.

System Architecture

LGCMS system architecture

Runtime Structure

  1. Route 53이 서비스 도메인을 관리합니다.
  2. 정적·미디어 콘텐츠는 S3와 CloudFront를 통해 전달합니다.
  3. API 트래픽은 ALB와 Istio Ingress Gateway를 거쳐 EKS의 도메인 서비스로 전달됩니다.
  4. 서비스 데이터는 PostgreSQL·pgvector, Valkey, Kafka에 분산 저장·처리됩니다.
  5. 생성형 AI와 임베딩은 Amazon Bedrock을 통해 호출합니다.
  6. 애플리케이션 배포는 Helm과 Argo CD 기반 GitOps로 관리합니다.
  7. Prometheus·Grafana·Loki·Tempo·OpenTelemetry·Kiali로 메트릭, 로그와 트레이스를 관찰합니다.

Infrastructure Architecture

LGCMS AWS infrastructure

  • AWS ap-northeast-2 리전에 VPC를 구성했습니다.
  • Public Subnet에는 외부 진입점과 운영 접근용 리소스를 배치했습니다.
  • Private Subnet에는 EKS 워커, PostgreSQL, Valkey, Kafka 등 내부 리소스를 배치했습니다.
  • Bastion Server를 통해 내부 자원에 제한적으로 접근합니다.
  • Terraform과 Terragrunt로 인프라 구성을 코드화했습니다.

Engineering Highlights

Challenge Solution
여러 인스턴스에서 동일 AI 작업을 동시에 실행 Valkey·Redisson 기반 분산 락으로 Critical Section 제어
대량 통계 데이터 집계 지연 Spring Batch, JDBC Batch Writer, Java 21 Virtual Threads, Airflow 적용
영상 파일의 브라우저·네트워크 환경 대응 FFmpeg 기반 HLS ABR 인코딩과 S3·CloudFront 배포
서비스별 인증과 접근 제어 Istio RequestAuthentication, AuthorizationPolicy, JWT Claim 기반 정책
마이크로서비스의 통신 흐름 추적 OpenTelemetry와 Tempo 기반 분산 트레이싱
트래픽 증가 시 서비스 가용성 유지 Metrics Server 기반 Horizontal Pod Autoscaler
서비스 변경의 독립적 배포 Custom Helm Chart와 Argo CD GitOps
장애 분석에 필요한 통합 관측 Prometheus·Grafana, Promtail·Loki, OpenTelemetry·Tempo, Kiali

Istio Service Mesh

  • Gateway / VirtualService: 외부 API 진입과 경로·가중치 기반 트래픽 라우팅
  • RequestAuthentication: JWT 검증과 Claim 추출
  • AuthorizationPolicy: 역할과 Claim에 따른 접근 제어
  • DestinationRule: 서비스 Subset과 로드밸런싱 정책 정의
  • Telemetry: Envoy 사이드카의 네트워크 메트릭과 트레이스 수집

Operational Evidence

운영 도구를 단순 도입 목록으로만 제시하지 않고, 실제 파이프라인과 관측 화면을 함께 남겼습니다.

Airflow · Observability · Argo CD 화면 보기

Airflow Batch Pipeline

Airflow batch operation screen

Distributed Trace

Grafana and distributed tracing screens

Argo CD GitOps Delivery

Argo CD application dashboard


Technology Stack

Area Technology
Frontend React 19, TypeScript, Vite, Redux Toolkit, Redux Persist, Styled Components, React Router, Axios, SSE
Backend Java 21, Kotlin, Spring Boot 3.5, Spring Cloud, JPA, QueryDSL, R2DBC, OpenFeign, Spring Batch, Resilience4j
AI Spring AI, Amazon Bedrock, Claude 3 Haiku, Titan Text Embeddings v2, RAG, pgvector
Media FFmpeg, HLS, Adaptive Bitrate Streaming, S3, CloudFront
Data & Messaging PostgreSQL, pgvector, Valkey, Apache Kafka
Cloud EKS, EC2, ALB, Route 53, RDS, ElastiCache, S3, CloudFront, Bedrock, ECR
Platform Docker, Istio, HPA, Terraform, Terragrunt, Helm, Argo CD
CI & Quality GitHub Actions, Jenkins, ESLint, Gradle, JUnit 5, Mockito, JaCoCo, SonarQube
Observability Prometheus, Grafana, Promtail, Loki, OpenTelemetry, Tempo, Kiali
Collaboration GitHub, Jira, Notion, Figma, Slack

최종 산출물 기준으로 GitHub Actions는 저장소 테스트, Jenkins는 통합·딜리버리, ECR은 컨테이너 이미지 저장, Helm·Argo CD는 배포를 담당합니다. 일부 서비스 저장소에는 GitHub Actions·GHCR 기반 워크플로도 병행되어 있습니다.


Service Map

Backend and platform repositories
Service Responsibility Repository
Auth Google 로그인, JWT 발급·갱신·무효화 backend-auth
Member 회원 정보, 역할, 관심 카테고리, 강사 승인 backend-member
Core 공통 카테고리와 FAQ 데이터 backend-core
Lecture 강의, 수강 신청, Q&A, 수강평 backend-lecture
Lesson 강좌, 진도, 메모, 퀴즈 backend-lesson
Payment 장바구니, 결제 준비·승인, 구매 상태 backend-payment
Upload 원본 콘텐츠 업로드와 저장 이벤트 backend-upload
Streaming FFmpeg 인코딩과 HLS 콘텐츠 생성 backend-streaming
Notification Kafka 이벤트, 알림 저장, WebFlux·SSE backend-notification
Guide Bot FAQ 기반 RAG 서비스 안내 backend-guide-bot
Tutor Bot 강의 자료 기반 학습 질의응답 backend-tutorbot
Level Test LLM 자동 채점과 종합 학습 리포트 backend-level-test
Consulting 강사 대시보드, 배치 집계, AI 피드백 backend-consulting
Resilience Common Resilience4j 공통 복원력 모듈 backend-resilience-common
Airflow 통계 배치 파이프라인 스케줄링 backend-airflow
Database 서비스별 PostgreSQL 초기 스키마 database-sql
Infrastructure AWS 인프라 프로비저닝 infra-terraform
Helm Charts 공통 Spring·Nginx 배포 Chart infra-helm-charts
Helm Values 서비스·환경별 배포 설정 infra-helm-values
Helm Packages 배포 Chart 패키지 저장소 infra-helm-packages

Project Timeline

Phase Period Scope
Planning 2025.07.04 - 2025.07.12 팀 구성, 아이디어 구체화, 협업 도구 설정
Design 2025.07.12 - 2025.08.05 UI/UX, 요구사항, ERD, 서비스·인프라 아키텍처
Development 2025.07.15 - 2025.09.07 Frontend, Backend, AI, Streaming, Infrastructure
Deployment 2025.07.16 - 2025.09.04 CI/CD, AWS, GitOps, Logging, Monitoring
Finalization 2025.09.08 - 2025.09.11 통합 테스트, 버그 수정, 문서화, 발표와 시연

Team

Team 교육저기다. · Mentor 정상덕

Member Role Main Responsibility
김형균 Team Lead · Frontend 일정·산출물 관리, 공통 컴포넌트와 헤더, 메인·검색, 강사 강의·강좌, 상세·등록·시청, 수강평·Q&A, 알림 SSE, 가이드·튜터 UI
임다희 Frontend 로그인·회원가입, 학생 강의, 레벨 테스트·리포트, FAQ 화면
남윤호 Full-stack 강사 대시보드, Consulting 서비스, AI 강사 리포트, Batch 최적화
심규환 Backend 강의·강좌·코어·결제·업로드·스트리밍 서비스
이재원 Cloud Admin · Backend 회원·인증·알림 서비스, AWS 인프라, CI/CD, 서비스 메시와 관측성
김선호 Backend · AI 서비스 가이드 봇, FAQ RAG, Query Expansion·Re-ranking
정수연 Backend · AI 튜터 봇, PDF 임베딩, 강의 자료 RAG와 대화 메모리
조민준 Backend · AI 레벨 테스트, 비동기 LLM 채점과 종합 리포트

Project Deliverables

  • 요구사항 정의서: 13개 도메인, 91개 기능 요구사항
  • WBS: 구현 태스크 263개 완료
  • 서비스 아키텍처 및 시퀀스 다이어그램
  • AWS 인프라 구성도
  • Terraform·Terragrunt IaC
  • Custom Helm Chart와 환경별 Values
  • 최종 발표 자료와 시연 영상
  • GitHub Issues, Pull Requests, Jira 기반 협업 이력

LG CNS AM Inspire Camp 2기 Final Project
Team 교육저기다. · 2025

Pinned Loading

  1. backend-auth backend-auth Public

    Java

Repositories

Showing 10 of 22 repositories

Top languages

Loading…

Most used topics

Loading…