SQL실습 서비스 구축하기 1 - 기획, 그리고 요구사항 분석

이월(0216tw)·2026년 2월 1일

개발이야기

목록 보기
1/1
post-thumbnail

안녕하세요, 개발자/강사/저자로 활동 중인 이월입니다. 😁
최근 데이터베이스 오프라인 수업을 진행하고, SQLD 수험서를 집필하면서 계속 머릿속을 떠나지 않는 목표가 하나 생겼습니다.
바로 “SQL을 직접 실습할 수 있는 서비스를 제공하기” 입니다.

1. 기획 의도

이 목표에는 크게 오프라인 수업 관점과 SQLD 집필/강의 관점 두 가지 이유가 있습니다.

[1] 오프라인 수업 관점: 3가지 이유

1) 지루할 수 있는 수업! 문제 풀이를 통해 재미와 몰입도를 끌어올리자

제 수업 지론은 [이론은 최대한 쉽고 빠르게 알려주고, 실무 같은 문제를 많이 풀어 체득하도록 하자] 입니다. 그러다보니 학생분들에게 여러 실습 문제를 제공하곤 하는데요, 이 부분을 더 강화해서, 보다 몰입할 수 있도록 실무st 시나리오와 데이터셋을 활용한 SQL 문제 풀이 모델을 구현하고 싶었습니다. 또한, 학생들이 어떤 부분이 어렵고 헷갈려하는지 등을 데이터로 수치화하여 보다 세밀한 학생 케어가 가능할 것이라 생각합니다.

기존 수업의 방식 : 노션을 활용해 실습문제를 풀도록 했음

바꾸려는 방식 :
(1) 시나리오 기반 데이터셋과 문제 제공
(2) 시도한 SQL 스냅샷 및 시도 횟수 등을 수치화하여 페인 포인트 분석 및 세밀한 티칭 제공
(3) 추가로 랭킹 기능도 도입해서 학생들의 도파민(?) 과 문제 해결 욕구를 보다 증진


2) 학습 로그를 수집해 ‘데이터 분석 수업’에 재활용하기 (내 데이터로 나를 분석해보자!)

수업 중에 "데이터 파이프라인 구축하기" 라는 과정이 있습니다.
사용자 로그 데이터나 DB의 데이터를 토대로 수집->전처리->정형DB load -> 분석 -> 인사이트 도출을 하는 과정을 그리는 건데요, 문제는 이 수업을 위한 데이터셋의 품질이 조금 아쉽다는 겁니다.

현재는 flask로 아주 간단한 웹사이트를 만들어 학생들이 클릭하거나, 입력하는 행위를 로그로 남겨 수업에 활용하고 있지만 음.. 좀 애매하다? 느낌이 들기도 하고 의미있는 데이터는 아니라고 생각했습니다.

그래서 직접 수강생이 접속한 기록들과 문제 풀이 등의 내용을 활용해 보다 의미있는 데이터 분석 및 인사이트 도출 시나리오를 구축해보려 합니다.

바꾸려는 방식
(1) 사용자의 행동 로그를 별도 저장하기 ( 아직 tool은 미정 )
(2) 사용자의 문제풀이,시도횟수,힌트사용횟수,GPT첨언 등 부가 데이터를 수집
(3) 데이터 분석시 본인의 데이터 혹은 반별 데이터, 혹은 익명화 데이터를 활용해 의미있는 데이터분석 수업을 꾀하고자 함

수집하려는 데이터 예시
문제풀이 결과(정답/오답) , 체류시간 , 오답유형 및 패턴 , 풀이 시도 횟수 등

3) 시험/과제를 온라인으로 자동화하고, 추가 학습까지 확장하기

오프라인 수업 특성상 시험지를 만들어서 평가를 해야하는데요, 채점..자동화 하면 좋을 것 같다고 생각해서 하는 김에 추가해보려 합니다. 또한 시험에도 "제출"기능을 추가하면 특정 학생이 어떤 부분에서 SQL을 잘못 썼는지, 어디 부분이 취약한지 등 피드백도 줄수 있을 것 같습니다. (현재는 직접 채점 방식을 사용중입니다)

또한, 정규수업 이외에도 편하게 다양한 문제를 풀어볼 수 있도록 하여 수강생들이 점점 발전하는 실력을 가졌으면 좋겠습니다. 🙌


SQLD 집필/강의 관점: 2가지 이유

[1] 높아진 SQLD 난이도에 맞춘 학습 방식이 필요해졌다

이번 SQLD 시험이 2024년도에 비해 체감상 더 어려웠다라는 말들이 많았습니다.
실제 합격률을 보면 2024년도는 57%였는데 2025년은 41%로 확 떨어진 것을 볼 수 있습니다.

응시 후기들을 보면 “SQL이 길어지고 복잡해졌다”는 이야기가 많았습니다.
즉, 예전처럼 문제은행식 암기만으로는 버티기 어려워졌고, SQL의 실행 원리나 쿼리 자체를 이해할 수 있어야 문제를 풀 수 있었다는 거죠. (아무래도 데이터를 다룰 줄 아는 사람에 대한 수요가 늘었고, 실무에 적합하게 일할 수 있는 인재를 육성하기 위한 난이도 조절로 보입니다.)

그래서 저는 SQLD 시험에 나올 법한 데이터셋을 직접 구성하고, 수강생분들이 직접 SQL을 작성해 풀어볼 수 있는 실습 환경을 제공하려고 합니다. (시험은 종이 방식으로 진행되다보니 SQL을 실행해보지 않고 시험에 응시하는 분들도 많을거라 생각합니다.)

2) 온라인 SQLD 강의에서 실시간 참여/진도를 파악하고 싶다

SQLD 온라인 강의(줌)에서는 이론 설명과 함께 문제 풀이를 진행할 예정인데, 이 때 실습 사이트를 활용해서 누가 참여 중이고, 어떤 문제를 정답/오답 했는지, 얼마나 풀었는지 등을 파악해 강의 운영의 효율을 높이고 수강생분들에게도 즉각적인 피드백을 줄 수 있을거라 생각합니다.



2. 개발 요구사항

그럼 “어떤 실습 사이트를 만들 거냐?”를 조금 더 구체화해보면, 핵심은 이거예요.

사용자는 SQL을 실행하고 제출해서 채점받을 수 있어야 하고,
관리자는 문제/데이터셋/버전을 안정적으로 운영할 수 있어야 한다.

필수 기능 - 사용자(User)

1) SQL 실행 & 채점 환경
사용자가 작성한 SQL을 실행하고, 정답 여부를 자동으로 채점할 수 있어야 합니다.
(일단은 SELECT만 가능하도록 제한할 예정이에요.)

2) “내가 얼마나 풀었는지” 결과가 한눈에 보이게
사용자가 본인 풀이 결과를 확인할 수 있어야 해요.
통과/실패 여부, 시도 횟수(n회 트라이), 제출 횟수, 테스트 실행 횟수, 오답 횟수(몇 번 틀렸는지) 등의 이력을 남기려 합니다.

필수 기능 - 관리자(admin)

1) 문제를 만들고 관리할 수 있는 관리자 페이지
문제 생성/수정/배포가 가능한 관리자 전용 화면을 구축합니다.

2) 오프라인 수업에서 헬프 요청을 실시간으로 보기
오프라인 실습 중 수강생이 “막혔어요” 같은 요청을 보내면,
관리자는 대시보드에서 실시간으로 확인할 수 있어야 합니다.
(이게 있으면 현장 운영이 훨씬 깔끔해질 것 같아요.)

3) 데이터셋 & 버전 관리
문제에 연결되는 데이터셋을 관리하고, 변경 이력(버전)을 남길 수 있어야 합니다.
그래야 “그때 그 문제 환경”이 재현되고, 채점 결과도 흔들리지 않기 때문이에요.

추가 기능

1) 행동 로그 수집 → 분석 수업에 활용
사용자의 실행/제출/오답 패턴 같은 행동 로그를 수집해서
추후 데이터 분석 수업이나 리서치에도 활용활 수 있도록 합니다.

2) 개인별 리포트 + GPT 피드백
사용자에게 “내가 어디가 약한지”를 리포트 형태로 보여주고,
GPT가 보완점(학습 추천/개선 방향)을 제안해주는 것도 생각 중이에요.

3) GPT 힌트 기능
문제 풀이하다 막히면, 곧바로 정답을 주는 게 아니라, 현재 SQL 스냅샷을 기준으로 힌트를 단계적으로 주도록 GPT를 붙이려고 합니다. (토큰 이슈로 문제당 최대 3회까지만 가능하도록 할 예정입니다)



3. 앞으로는?

실제 설계와 구현을 해보면서 어떤 이슈가 발생했고, 어떤 고민을 통해 해결방안을 찾았는지 등 내용을 정리해서 주기적으로 업로드하려고 합니다.
사용하기 좋은 툴이나 기술이 있다면 공유 부탁드려요! 감사합니다 :)

profile
개발도 하고 강의도 하고 고민을 제일 많이 합니다

0개의 댓글