Skip to main content
A
// 케이스 파일 01 / 16
← 전체 케이스 파일

AI 네이티브 학습 관리 시스템 · 멀티 테넌트

Blitzlearning

BlitzLIS는 Altacee가 Blitz Learning Technologies를 위해 만든 학습 플랫폼입니다. 기업은 구성원을 교육하고, 저자는 AI로 코스를 만들고, 매니저는 팀을 살피며, 모든 테넌트는 데이터베이스 수준에서 서로 완전히 분리됩니다. 이 모두가 하나의 시스템에서 이뤄집니다.

blitzlearning.in ↗
도시에 // 01
클라이언트
Blitzlearning
분야
에듀테크
제품
BlitzLIS LMS
상태
프로덕션 운영 중
스택
FastAPI · PostgreSQL · pgvector
운영 주소
blitzlearning.in
blitzlearning.in
테넌트 개요
BlitzLIS· 테넌트 관리자 · Acme Inc
00> BLITZLIS란

학습 기업 전체를 하나의 시스템에

BlitzLIS(Learning Intelligence System)는 직원을 교육하고, 컴플라이언스 프로그램을 운영하고, 고객을 교육하는 기업을 위한 완전한 브랜딩 지원 멀티 테넌트 학습 관리 시스템입니다. 각 기업은 공유 인프라 위에 자신만의 워크스페이스를 갖고, 전용 서브도메인, 로고, 색상, 로그인 화면, 이메일 발신 정체성, 수료증을 씁니다. 학습자는 다른 기업을 볼 수 없고, Blitz 또한 보지 못합니다.

하나의 워크스페이스 안에서 여섯 종류의 사람이 함께 일합니다. 학습자는 코스를 듣고, 퀴즈를 치르고, 수료증을 받습니다. 저자는 블록 에디터에서 직접, 또는 기획서와 자사 문서를 바탕으로 AI와 함께 코스를 만듭니다. 검토자는 공개 전의 모든 변경을 승인하거나 반려합니다. 매니저는 교육을 배정하고 팀의 진행을 살핍니다. 관리자는 사용자, 그룹, 브랜딩, 컴플라이언스, 리포트를 운영합니다. 이 모두의 위에서 플랫폼 운영자가 모든 테넌트, 요금제, 기능 플래그를 관리합니다.

Altacee가 플랫폼을 처음부터 끝까지 설계하고 구축했습니다. FastAPI 백엔드와 비동기 워커, 모든 테넌트 테이블에 행 수준 보안을 적용한 PostgreSQL 스키마, 키워드와 의미를 아우르는 검색, AI 저작 파이프라인, 모든 역할을 위한 Next.js 웹 앱, 그리고 이를 구동하는 배포 환경까지입니다.

저작 도구, LMS, 퀴즈 엔진, 수료증 생성기, 포럼, 리포트용 스프레드시트처럼 보통 여러 도구를 따로 써야 하는 기능을 하나의 제품으로 묶었습니다. 교육 회사는 이를 자사 브랜드로 만들어 판매하고, 여러 고객사를 동시에 운영할 수 있습니다.

Blitz Learning 방문 ↗
01> 제공 기능

교육 팀에 필요한 모든 것을 기본으로

열두 개 영역, 하나의 제품. 모두 이미 동작하는 기능이며, 로드맵 항목이 아닙니다.

01

학습 경험

  • ·이어서 들을 코스, 마감일, 연속 학습, 추천을 보여 주는 홈 대시보드
  • ·기술, 카테고리, 언어, 소요 시간, 수준별로 검색하고 필터링하는 코스 라이브러리
  • ·챕터별 개요, 진행률, 보던 곳부터 이어 보기를 갖춘 레슨 플레이어
  • ·인터랙티브 블록: 지식 확인, 정렬, 시나리오, 플래시카드, 탭, 타임라인
  • ·어느 구절에나 쓰는 하이라이트와 비공개 메모, 읽기 설정, 집중 모드
  • ·레슨 끝의 요약, 그리고 레슨 안의 Ask AI
02

저작 스튜디오

  • ·모든 초안, 코스, 버전을 한곳에 모은 콘텐츠 스튜디오
  • ·약 35가지 블록과 인스펙터를 갖춘 블록 기반 레슨 에디터
  • ·댓글, 이력, 비교, 복원을 지원하는 버전 관리 초안
  • ·휴대폰, 태블릿, 데스크톱 크기의 학습자 미리보기와 공유 링크
  • ·카탈로그 정보, 테마, 분류 체계: 카테고리, 색상으로 구분한 태그, 기술
  • ·재사용 가능한 블록, 그리고 코스를 순서대로 엮어 커리큘럼으로 만드는 러닝 패스
03

AI 저작

  • ·코스 생성기: 기획서를 쓰고, 코스를 다듬고, 개요를 받은 뒤 전체 레슨까지
  • ·자사 자료 기반 생성: 문서를 업로드하면 그 내용으로 코스를 작성
  • ·에디터의 Ask AI로 다시 쓰기, 줄이기, 번역하기, 텍스트를 시각 블록으로 바꾸기
  • ·문제 은행을 위한 AI 문제 생성기
  • ·시그널: 각 레슨의 품질 점검과 수정 제안
  • ·AI가 바꾼 내용은 모두 초안으로 들어오고 사람이 승인하며, 스스로 공개되는 일은 없습니다
04

평가

  • ·9가지 문제 유형: 객관식, 참/거짓, 단답형·서술형, 숫자, 순서 배열, 짝 맞추기, 빈칸 채우기, 이미지 핫스팟
  • ·여러 퀴즈가 함께 쓰는 문제 은행
  • ·퀴즈 규칙: 합격 점수, 응시 횟수, 제한 시간, 학습자별 예외
  • ·결과와 전체 응시 이력을 보여 주는 퀴즈 러너
05

검토와 공개

  • ·상태 워크플로: 초안, 검토 중, 승인됨, 공개됨, 반려됨
  • ·대기 중인 모든 작업을 모은 검토자 받은편지함
  • ·검토 모드: 블록에 댓글 달기, 수정 제안, 승인 또는 거절
  • ·학습자에게 닿기 전의 공개 체크리스트
06

수료증

  • ·코스를 마치면 자동 발급
  • ·테넌트별 자체 브랜딩이 가능한 수료증 디자이너
  • ·QR 코드, PDF 다운로드, 공유
  • ·수료증 번호가 진짜인지 누구나 확인하는 공개 페이지
07

커뮤니티

  • ·게시글, 사진, 동영상, 문서, 투표를 담는 피드
  • ·공개 또는 비공개 커뮤니티와 인원이 제한된 러닝 서클
  • ·리액션, 멘션, 채택된 최고 답변이 있는 스레드
  • ·각 스레드의 AI 카드: 요약, FAQ 초안, 번역
  • ·검증된 기술과 취득한 수료증이 담긴 프로필
08

매니저

  • ·팀 개요: 활동 중인 학습자, 수강 등록, 진행 중, 기한 초과
  • ·코스나 패스를 팀 또는 개인에게 배정
  • ·CSV와 XLSX로 내보낼 수 있는 팀 진행 현황
  • ·학습자 한 명의 코스별 전체 진행 상황
  • ·리포트와 기술 격차 커버리지, 예약 리포트 이메일
09

관리

  • ·직원, 배정된 학습, 컴플라이언스, 신규 입사자 개요
  • ·사용자, 부서, 그룹, 대상, 사용자 지정 필드, 수강 등록
  • ·위험에 처한 학습자와 그 이유를 알려 주는 AI 인사이트
  • ·컴플라이언스, 역량 매트릭스, 기술 인텔리전스
  • ·모든 로그인, 역할 변경, 설정의 감사 로그
  • ·디렉터리 동기화(SCIM), API 키, 웹훅, 리마인더, Power BI
10

화이트 라벨

  • ·테넌트마다 전용 서브도메인 또는 커스텀 도메인
  • ·고유한 로고, 색상, 서체, 로그인 화면
  • ·모든 이메일에 고유한 발신자 정체성과 SMTP 서버
  • ·고유한 수료증 디자인과 법적 고지 푸터
11

표준과 콘텐츠

  • ·SCORM 1.2 및 2004 가져오기·내보내기
  • ·cmi5와 AICC 가져오기, xAPI 탐색기
  • ·챕터, 자막, 동기화된 대본이 있는 동영상 레슨
  • ·AI 또는 사람의 왕복 검수를 거치는 코스 번역
12

플랫폼 운영

  • ·모든 테넌트를 아우르는 슈퍼 관리자 대시보드
  • ·도메인, 리전, 상태별 테넌트
  • ·테넌트별 AI 사용량 모니터링과 기능 플래그
  • ·과금 요금제와 지원 티켓
02> 격리

API가 잘못되어도 한 테넌트는 다른 테넌트를 볼 수 없습니다

대부분의 멀티 테넌트 제품은 애플리케이션 코드에서 테넌트별로 걸러 내기 때문에, WHERE 절 하나만 빠뜨려도 한 고객의 데이터가 다른 고객에게 새어 나갑니다. BlitzLIS는 그 벽을 데이터베이스에 세웠습니다. 모든 요청은 트랜잭션을 열어 어느 테넌트 소속인지 PostgreSQL에 알리고, 각 테이블의 정책은 다른 곳에서 온 행을 모두 거부합니다.

  1. 01테넌트의 도메인으로 요청이 도착해 인증됨
  2. 02API가 해당 트랜잭션에 한해서만 app.tenant_id를 설정
  3. 03PostgreSQL 정책이 모든 읽기를 걸러 내고 타 테넌트 쓰기를 모두 거부
  4. 04검색도 같은 벽 안에서 실행: 단어는 Meilisearch, 의미는 pgvector
  5. 05백그라운드 워커가 업로드를 수집해, 도착한 자료는 곧바로 검색 가능
postgres // tenant_isolation.sql
CREATE POLICY lessons_tenant_isolation ON lessons
  USING (tenant_id = current_setting('app.tenant_id', true)::uuid)
  WITH CHECK (tenant_id = current_setting('app.tenant_id', true)::uuid);

-- per request, inside the transaction
SET LOCAL app.tenant_id = '…';
> 플랫폼 마이그레이션에서 가져온, 테넌트 테이블마다 하나의 정책

// 보안

엔터프라이즈급 로그인과 격리를 기본으로

  • 모든 테넌트 테이블에 PostgreSQL 행 수준 보안
  • Google, Microsoft, Okta, SAML 싱글 사인온
  • TOTP 앱과 WebAuthn 키를 이용한 2단계 인증
  • Argon2id 비밀번호 해시
  • 15분짜리 액세스 토큰
  • 변경할 수 없는 감사 로그
  • 코스 단위로 범위를 정하는 역할 기반 권한
03> 제품

모든 화면, 모든 역할

데모 워크스페이스에서 캡처한, 운영 중인 제품의 실제 화면입니다. 일곱 명의 사람, 하나의 플랫폼.

학습자

배우는 곳. 다음에 할 일을 아는 홈, 둘러볼 라이브러리, 읽기에 맞춘 레슨 플레이어, 그리고 마지막엔 증명까지.

학습자 홈: 진행률이 붙은 이어 들을 코스, 추천, 수료증, 리더보드, 다가오는 마감일을 한 페이지에.
학습자 홈진행률이 붙은 이어 들을 코스, 추천, 수료증, 리더보드, 다가오는 마감일을 한 페이지에.
코스 라이브러리: 학습자가 들을 수 있는 모든 코스를 기술, 카테고리, 언어, 소요 시간, 수준 필터로.
코스 라이브러리학습자가 들을 수 있는 모든 코스를 기술, 카테고리, 언어, 소요 시간, 수준 필터로.
레슨 플레이어: 챕터별 개요, 진행률, 메모, 집중 모드를 갖춘 카드형 레슨.
레슨 플레이어챕터별 개요, 진행률, 메모, 집중 모드를 갖춘 카드형 레슨.
지식 확인: 레슨에 녹아든 연습: 답하고, 이유를 확인하고, 다시 해 보고, 이어서 진행.
지식 확인레슨에 녹아든 연습: 답하고, 이유를 확인하고, 다시 해 보고, 이어서 진행.
내 수료증: 상태, 만료일, 실시간 미리보기, QR 검증이 담긴 발급된 수료증.
내 수료증상태, 만료일, 실시간 미리보기, QR 검증이 담긴 발급된 수료증.
공개 검증: 수료증 코드만 있으면 누가, 어떤 코스를, 언제 수료했는지 누구나 확인할 수 있습니다.
공개 검증수료증 코드만 있으면 누가, 어떤 코스를, 언제 수료했는지 누구나 확인할 수 있습니다.
러닝 패스: 순서대로 열리는 코스의 구조화된 순서와 패스 진행률.
러닝 패스순서대로 열리는 코스의 구조화된 순서와 패스 진행률.
성취: 포인트, 연속 학습, 배지, 레벨, 리더보드, 그리고 멘토링.
성취포인트, 연속 학습, 배지, 레벨, 리더보드, 그리고 멘토링.
캘린더: 마감일, 라이브 세션, 이벤트를 월·주·목록으로.
캘린더마감일, 라이브 세션, 이벤트를 월·주·목록으로.
학습자의 언어로: 인터페이스 전체가 사람마다 언어를 바꿉니다. 여기서는 독일어 계정 페이지입니다.
학습자의 언어로인터페이스 전체가 사람마다 언어를 바꿉니다. 여기서는 독일어 계정 페이지입니다.

저자와 검토자

코스를 만드는 곳. 기획서와 문서에서 개요로, 블록 에디터의 레슨으로, 그리고 검토와 공개로.

콘텐츠 스튜디오: 저자의 초안과 코스, 검토 중인 것과 공개된 것.
콘텐츠 스튜디오저자의 초안과 코스, 검토 중인 것과 공개된 것.
코스 만들기: 처음부터 시작하거나, 코스를 설명하고 AI가 초안을 쓰게 합니다.
코스 만들기처음부터 시작하거나, 코스를 설명하고 AI가 초안을 쓰게 합니다.
AI 코스 기획서: 이 코스가 무엇을, 누구에게, 어떤 수준과 어조로, 어떤 문서를 바탕으로 가르칠지.
AI 코스 기획서이 코스가 무엇을, 누구에게, 어떤 수준과 어조로, 어떤 문서를 바탕으로 가르칠지.
코스 작성 중: 생성기가 백그라운드에서 일합니다: 자료 수집, 개요, 레슨.
코스 작성 중생성기가 백그라운드에서 일합니다: 자료 수집, 개요, 레슨.
블록 에디터: 블록으로 구성한 레슨: 텍스트, 콜아웃, 미디어, 확인 문제, 인터랙션. 개요와 인스펙터 포함.
블록 에디터블록으로 구성한 레슨: 텍스트, 콜아웃, 미디어, 확인 문제, 인터랙션. 개요와 인스펙터 포함.
에디터 속 AI: 레슨 어시스턴트가 변경 사항을 초안으로 제안하면, 저자가 수락하거나 거절합니다.
에디터 속 AI레슨 어시스턴트가 변경 사항을 초안으로 제안하면, 저자가 수락하거나 거절합니다.
검토자 받은편지함: 결정을 기다리는 모든 버전을 하나의 대기열에.
검토자 받은편지함결정을 기다리는 모든 버전을 하나의 대기열에.
검토 모드: 검토자가 블록에 댓글을 달고, 수정을 제안한 뒤, 승인하거나 변경을 요청합니다.
검토 모드검토자가 블록에 댓글을 달고, 수정을 제안한 뒤, 승인하거나 변경을 요청합니다.

커뮤니티

학습자가 대화하는 곳. 피드, 커뮤니티와 서클, 투표가 있는 스레드, 그리고 이를 요약해 주는 AI.

커뮤니티 피드: 게시글, 코스 수료, 취득한 수료증, 투표, 활발한 커뮤니티.
커뮤니티 피드게시글, 코스 수료, 취득한 수료증, 투표, 활발한 커뮤니티.
AI가 있는 스레드: AI 어시스턴트가 요약, FAQ 작성, 번역을 바로 할 수 있는 투표 스레드.
AI가 있는 스레드AI 어시스턴트가 요약, FAQ 작성, 번역을 바로 할 수 있는 투표 스레드.
커뮤니티: 공개·비공개 커뮤니티와 좌석 수가 제한된 소규모 러닝 서클.
커뮤니티공개·비공개 커뮤니티와 좌석 수가 제한된 소규모 러닝 서클.

매니저

팀을 운영하는 곳. 누구에게 무엇을 배정했는지, 누가 뒤처졌는지, 스스로 내보내고 메일로 보내는 리포트.

팀 개요: 활동 중인 학습자, 수강 등록, 진행 중, 완료, 기한 초과, 평균 수료율.
팀 개요활동 중인 학습자, 수강 등록, 진행 중, 완료, 기한 초과, 평균 수료율.
팀 진행 현황: 모든 학습자의 등록, 완료, 진행 중, 기한 초과 건수를 내보내기 가능한 형태로.
팀 진행 현황모든 학습자의 등록, 완료, 진행 중, 기한 초과 건수를 내보내기 가능한 형태로.
리포트: 팀 진행 현황, 수료, 기한 초과 학습자, 수료증을 CSV, XLSX, PDF로, 기술 격차도 함께.
리포트팀 진행 현황, 수료, 기한 초과 학습자, 수료증을 CSV, XLSX, PDF로, 기술 격차도 함께.
학습자 한 명: 한 사람의 코스를 상태, 진행률, 마감일, 수료 여부와 함께.
학습자 한 명한 사람의 코스를 상태, 진행률, 마감일, 수료 여부와 함께.

테넌트 관리자

기업이 자사 아카데미를 운영하는 곳. 사람, 컴플라이언스, 위험, 브랜딩, 그리고 전체 감사 기록.

테넌트 개요: 직원, 배정된 학습, 대기 항목, 컴플라이언스, 신규 입사자, AI가 만든 코스를 한눈에.
테넌트 개요직원, 배정된 학습, 대기 항목, 컴플라이언스, 신규 입사자, AI가 만든 코스를 한눈에.
AI 인사이트: 교육을 놓칠 위험이 있는 학습자와 그 배경 요인.
AI 인사이트교육을 놓칠 위험이 있는 학습자와 그 배경 요인.
감사 로그: 누가, 어떤 리소스에, 어디서 무엇을 했는지. 작업과 날짜로 필터링할 수 있습니다.
감사 로그누가, 어떤 리소스에, 어디서 무엇을 했는지. 작업과 날짜로 필터링할 수 있습니다.
테마와 브랜딩: 색상, 로고, 로그인 화면, 도메인, 이메일, 수료증, 서체를 실시간 미리보기와 함께.
테마와 브랜딩색상, 로고, 로그인 화면, 도메인, 이메일, 수료증, 서체를 실시간 미리보기와 함께.
커뮤니티 분석: 시간에 따른 멤버 수, 참여율, 게시글과 댓글.
커뮤니티 분석시간에 따른 멤버 수, 참여율, 게시글과 댓글.

플랫폼 운영자

Blitz가 모든 고객사를 한꺼번에 운영하는 곳.

슈퍼 관리자 대시보드: 플랫폼 전체의 모든 테넌트, 총 사용자, 활동 중인 학습자, 수강 등록, 수료.
슈퍼 관리자 대시보드플랫폼 전체의 모든 테넌트, 총 사용자, 활동 중인 학습자, 수강 등록, 수료.
04> 빠른 답변

질문으로 보는 BlitzLIS

BlitzLIS란 무엇인가요?
BlitzLIS는 Altacee가 Blitz Learning Technologies를 위해 만든 멀티 테넌트 AI 네이티브 학습 관리 시스템입니다. 여러 기업의 직원 교육, 컴플라이언스, 고객 교육을 동시에 운영하며, 각 기업에 브랜딩이 적용된 독립 워크스페이스를 제공합니다.
BlitzLIS는 누가 만들었나요?
Altacee가 처음부터 끝까지 설계하고 구축했습니다. FastAPI 백엔드, 행 수준 보안을 갖춘 PostgreSQL 데이터 모델, 검색, AI 저작 파이프라인, Next.js 웹 앱, 그리고 배포까지입니다.
BlitzLIS는 테넌트를 어떻게 분리하나요?
데이터베이스에서 분리합니다. 요청마다 트랜잭션에 테넌트를 설정하고, 모든 테넌트 테이블의 PostgreSQL 행 수준 보안 정책이 다른 테넌트의 행을 거부하므로, API에 버그가 있어도 다른 회사의 데이터가 새어 나가지 않습니다.
BlitzLIS로 AI를 활용해 코스를 만들 수 있나요?
네. 저자가 기획서를 쓰고 필요하면 자사 문서를 업로드하면, 생성기가 개요와 레슨을 초안으로 작성합니다. AI가 바꾼 내용은 모두 초안으로 들어오며, 학습자에게 보이기 전에 사람의 검토를 거칩니다.
BlitzLIS는 어떤 이러닝 표준을 지원하나요?
SCORM 1.2와 SCORM 2004의 가져오기·내보내기, 그리고 cmi5와 AICC 가져오기를 지원합니다.
학습자는 어떻게 로그인하나요?
Argon2id로 해시한 비밀번호, 또는 Google, Microsoft, Okta, SAML을 통한 싱글 사인온으로 로그인합니다. TOTP 앱이나 WebAuthn 키를 이용한 2단계 인증도 선택할 수 있습니다.
BlitzLIS는 무엇으로 만들어졌나요?
FastAPI와 비동기 워커, pgvector를 갖춘 PostgreSQL 16, Meilisearch, Redis, 그리고 Next.js 웹 앱입니다.
01

> 어떻게 출시했는가

// 과제01

Blitzlearning에는 무엇이 필요했나요?

AI 네이티브 LMS는 서로 아무것도 공유하지 않는 기관에 팔려야 했습니다. 한 테넌트가 다른 테넌트의 수강생을 보는 순간 계약은 끝나고, 그러면서도 아무도 한 장씩 넘기고 싶지 않은 강의 라이브러리를 즉각적으로 느끼게 해야 했습니다.

// 접근 방식02

Altacee는 Blitzlearning을(를) 어떻게 만들었나요?

격리는 애플리케이션 코드가 아니라 데이터베이스에 둡니다. 테넌트별 행 수준 보안을 적용한 Postgres 16, 의미 기반 검색을 위한 pgvector, 키워드 속도를 위한 Meilisearch, 그리고 비동기 FastAPI 뒤에서 자료를 적재하는 arq 워커.

// 성과03

Blitzlearning은(는) 무엇을 얻었나요?

테넌트는 하나의 데이터베이스를 공유하면서도 API가 틀려도 남의 행에 닿을 수 없습니다. 강의 자료는 업로드가 끝나는 순간부터 표현으로도, 의도로도 검색됩니다.

case --info blitzlearning
> 클라이언트 · Blitzlearning
> 분야 · 에듀테크
> 스택 · FastAPI · PostgreSQL · pgvector · Meilisearch · Redis
> 결과 · 멀티테넌트 · RLS 강제 · 운영 중
> case/blitzlearning출시 완료 ▮

이런 시스템이 필요하십니까?

무엇을 만들고 계신지 알려 주십시오. 영업 제안이 아니라 범위가 정리된 계획으로 답하겠습니다.