AI 네이티브 학습 관리 시스템 · 멀티 테넌트
Blitzlearning
BlitzLIS는 Altacee가 Blitz Learning Technologies를 위해 만든 학습 플랫폼입니다. 기업은 구성원을 교육하고, 저자는 AI로 코스를 만들고, 매니저는 팀을 살피며, 모든 테넌트는 데이터베이스 수준에서 서로 완전히 분리됩니다. 이 모두가 하나의 시스템에서 이뤄집니다.
- 클라이언트
- Blitzlearning
- 분야
- 에듀테크
- 제품
- BlitzLIS LMS
- 상태
- 프로덕션 운영 중
- 스택
- FastAPI · PostgreSQL · pgvector
- 운영 주소
- blitzlearning.in

학습 기업 전체를 하나의 시스템에
BlitzLIS(Learning Intelligence System)는 직원을 교육하고, 컴플라이언스 프로그램을 운영하고, 고객을 교육하는 기업을 위한 완전한 브랜딩 지원 멀티 테넌트 학습 관리 시스템입니다. 각 기업은 공유 인프라 위에 자신만의 워크스페이스를 갖고, 전용 서브도메인, 로고, 색상, 로그인 화면, 이메일 발신 정체성, 수료증을 씁니다. 학습자는 다른 기업을 볼 수 없고, Blitz 또한 보지 못합니다.
하나의 워크스페이스 안에서 여섯 종류의 사람이 함께 일합니다. 학습자는 코스를 듣고, 퀴즈를 치르고, 수료증을 받습니다. 저자는 블록 에디터에서 직접, 또는 기획서와 자사 문서를 바탕으로 AI와 함께 코스를 만듭니다. 검토자는 공개 전의 모든 변경을 승인하거나 반려합니다. 매니저는 교육을 배정하고 팀의 진행을 살핍니다. 관리자는 사용자, 그룹, 브랜딩, 컴플라이언스, 리포트를 운영합니다. 이 모두의 위에서 플랫폼 운영자가 모든 테넌트, 요금제, 기능 플래그를 관리합니다.
Altacee가 플랫폼을 처음부터 끝까지 설계하고 구축했습니다. FastAPI 백엔드와 비동기 워커, 모든 테넌트 테이블에 행 수준 보안을 적용한 PostgreSQL 스키마, 키워드와 의미를 아우르는 검색, AI 저작 파이프라인, 모든 역할을 위한 Next.js 웹 앱, 그리고 이를 구동하는 배포 환경까지입니다.
저작 도구, LMS, 퀴즈 엔진, 수료증 생성기, 포럼, 리포트용 스프레드시트처럼 보통 여러 도구를 따로 써야 하는 기능을 하나의 제품으로 묶었습니다. 교육 회사는 이를 자사 브랜드로 만들어 판매하고, 여러 고객사를 동시에 운영할 수 있습니다.
교육 팀에 필요한 모든 것을 기본으로
열두 개 영역, 하나의 제품. 모두 이미 동작하는 기능이며, 로드맵 항목이 아닙니다.
학습 경험
- ·이어서 들을 코스, 마감일, 연속 학습, 추천을 보여 주는 홈 대시보드
- ·기술, 카테고리, 언어, 소요 시간, 수준별로 검색하고 필터링하는 코스 라이브러리
- ·챕터별 개요, 진행률, 보던 곳부터 이어 보기를 갖춘 레슨 플레이어
- ·인터랙티브 블록: 지식 확인, 정렬, 시나리오, 플래시카드, 탭, 타임라인
- ·어느 구절에나 쓰는 하이라이트와 비공개 메모, 읽기 설정, 집중 모드
- ·레슨 끝의 요약, 그리고 레슨 안의 Ask AI
저작 스튜디오
- ·모든 초안, 코스, 버전을 한곳에 모은 콘텐츠 스튜디오
- ·약 35가지 블록과 인스펙터를 갖춘 블록 기반 레슨 에디터
- ·댓글, 이력, 비교, 복원을 지원하는 버전 관리 초안
- ·휴대폰, 태블릿, 데스크톱 크기의 학습자 미리보기와 공유 링크
- ·카탈로그 정보, 테마, 분류 체계: 카테고리, 색상으로 구분한 태그, 기술
- ·재사용 가능한 블록, 그리고 코스를 순서대로 엮어 커리큘럼으로 만드는 러닝 패스
AI 저작
- ·코스 생성기: 기획서를 쓰고, 코스를 다듬고, 개요를 받은 뒤 전체 레슨까지
- ·자사 자료 기반 생성: 문서를 업로드하면 그 내용으로 코스를 작성
- ·에디터의 Ask AI로 다시 쓰기, 줄이기, 번역하기, 텍스트를 시각 블록으로 바꾸기
- ·문제 은행을 위한 AI 문제 생성기
- ·시그널: 각 레슨의 품질 점검과 수정 제안
- ·AI가 바꾼 내용은 모두 초안으로 들어오고 사람이 승인하며, 스스로 공개되는 일은 없습니다
평가
- ·9가지 문제 유형: 객관식, 참/거짓, 단답형·서술형, 숫자, 순서 배열, 짝 맞추기, 빈칸 채우기, 이미지 핫스팟
- ·여러 퀴즈가 함께 쓰는 문제 은행
- ·퀴즈 규칙: 합격 점수, 응시 횟수, 제한 시간, 학습자별 예외
- ·결과와 전체 응시 이력을 보여 주는 퀴즈 러너
검토와 공개
- ·상태 워크플로: 초안, 검토 중, 승인됨, 공개됨, 반려됨
- ·대기 중인 모든 작업을 모은 검토자 받은편지함
- ·검토 모드: 블록에 댓글 달기, 수정 제안, 승인 또는 거절
- ·학습자에게 닿기 전의 공개 체크리스트
수료증
- ·코스를 마치면 자동 발급
- ·테넌트별 자체 브랜딩이 가능한 수료증 디자이너
- ·QR 코드, PDF 다운로드, 공유
- ·수료증 번호가 진짜인지 누구나 확인하는 공개 페이지
커뮤니티
- ·게시글, 사진, 동영상, 문서, 투표를 담는 피드
- ·공개 또는 비공개 커뮤니티와 인원이 제한된 러닝 서클
- ·리액션, 멘션, 채택된 최고 답변이 있는 스레드
- ·각 스레드의 AI 카드: 요약, FAQ 초안, 번역
- ·검증된 기술과 취득한 수료증이 담긴 프로필
매니저
- ·팀 개요: 활동 중인 학습자, 수강 등록, 진행 중, 기한 초과
- ·코스나 패스를 팀 또는 개인에게 배정
- ·CSV와 XLSX로 내보낼 수 있는 팀 진행 현황
- ·학습자 한 명의 코스별 전체 진행 상황
- ·리포트와 기술 격차 커버리지, 예약 리포트 이메일
관리
- ·직원, 배정된 학습, 컴플라이언스, 신규 입사자 개요
- ·사용자, 부서, 그룹, 대상, 사용자 지정 필드, 수강 등록
- ·위험에 처한 학습자와 그 이유를 알려 주는 AI 인사이트
- ·컴플라이언스, 역량 매트릭스, 기술 인텔리전스
- ·모든 로그인, 역할 변경, 설정의 감사 로그
- ·디렉터리 동기화(SCIM), API 키, 웹훅, 리마인더, Power BI
화이트 라벨
- ·테넌트마다 전용 서브도메인 또는 커스텀 도메인
- ·고유한 로고, 색상, 서체, 로그인 화면
- ·모든 이메일에 고유한 발신자 정체성과 SMTP 서버
- ·고유한 수료증 디자인과 법적 고지 푸터
표준과 콘텐츠
- ·SCORM 1.2 및 2004 가져오기·내보내기
- ·cmi5와 AICC 가져오기, xAPI 탐색기
- ·챕터, 자막, 동기화된 대본이 있는 동영상 레슨
- ·AI 또는 사람의 왕복 검수를 거치는 코스 번역
플랫폼 운영
- ·모든 테넌트를 아우르는 슈퍼 관리자 대시보드
- ·도메인, 리전, 상태별 테넌트
- ·테넌트별 AI 사용량 모니터링과 기능 플래그
- ·과금 요금제와 지원 티켓
API가 잘못되어도 한 테넌트는 다른 테넌트를 볼 수 없습니다
대부분의 멀티 테넌트 제품은 애플리케이션 코드에서 테넌트별로 걸러 내기 때문에, WHERE 절 하나만 빠뜨려도 한 고객의 데이터가 다른 고객에게 새어 나갑니다. BlitzLIS는 그 벽을 데이터베이스에 세웠습니다. 모든 요청은 트랜잭션을 열어 어느 테넌트 소속인지 PostgreSQL에 알리고, 각 테이블의 정책은 다른 곳에서 온 행을 모두 거부합니다.
- 01테넌트의 도메인으로 요청이 도착해 인증됨
- 02API가 해당 트랜잭션에 한해서만 app.tenant_id를 설정
- 03PostgreSQL 정책이 모든 읽기를 걸러 내고 타 테넌트 쓰기를 모두 거부
- 04검색도 같은 벽 안에서 실행: 단어는 Meilisearch, 의미는 pgvector
- 05백그라운드 워커가 업로드를 수집해, 도착한 자료는 곧바로 검색 가능
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분짜리 액세스 토큰
- 변경할 수 없는 감사 로그
- 코스 단위로 범위를 정하는 역할 기반 권한
모든 화면, 모든 역할
데모 워크스페이스에서 캡처한, 운영 중인 제품의 실제 화면입니다. 일곱 명의 사람, 하나의 플랫폼.
학습자
배우는 곳. 다음에 할 일을 아는 홈, 둘러볼 라이브러리, 읽기에 맞춘 레슨 플레이어, 그리고 마지막엔 증명까지.










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








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



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




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





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

질문으로 보는 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 웹 앱입니다.
> 어떻게 출시했는가
Blitzlearning에는 무엇이 필요했나요?
AI 네이티브 LMS는 서로 아무것도 공유하지 않는 기관에 팔려야 했습니다. 한 테넌트가 다른 테넌트의 수강생을 보는 순간 계약은 끝나고, 그러면서도 아무도 한 장씩 넘기고 싶지 않은 강의 라이브러리를 즉각적으로 느끼게 해야 했습니다.
Altacee는 Blitzlearning을(를) 어떻게 만들었나요?
격리는 애플리케이션 코드가 아니라 데이터베이스에 둡니다. 테넌트별 행 수준 보안을 적용한 Postgres 16, 의미 기반 검색을 위한 pgvector, 키워드 속도를 위한 Meilisearch, 그리고 비동기 FastAPI 뒤에서 자료를 적재하는 arq 워커.
Blitzlearning은(는) 무엇을 얻었나요?
테넌트는 하나의 데이터베이스를 공유하면서도 API가 틀려도 남의 행에 닿을 수 없습니다. 강의 자료는 업로드가 끝나는 순간부터 표현으로도, 의도로도 검색됩니다.
이런 시스템이 필요하십니까?
무엇을 만들고 계신지 알려 주십시오. 영업 제안이 아니라 범위가 정리된 계획으로 답하겠습니다.