개요
이 글은 BOJ-extension v1의 개발 회고와 서비스 종료를 알리기 위한 글이다.
최근 백준(acmicpc.net)이 채점 서비스를 종료하고 아카이브로 전환된다는 소식을 접해 이 글을 작성하게 되었다.
BOJ-extension
BOJ-extension은 아주 사소한 불편함에서 시작된 프로젝트이다. 대학생 시절 알고리즘 공부를 위해 백준 사이트를 이용했다. 나는 평소 무언가를 하다가 삼천포로 빠지는 경향이 있었다. 백준 알고리즘 문제를 풀다 보면 웹 브라우저의 문제 화면과 IDE의 코드 에디터 창을 번갈아 가며 확인해야 하는 번거로움이 있다. 다 푼 소스코드를 일일이 복사해서 웹에 붙여넣고 채점을 기다리는 과정 또한 꽤나 귀찮은 작업이다.
이러한 불편함을 해결하기 위해, 내가 가장 자주 사용하는 에디터인 VS Code 안에서 문제를 확인하고 채점까지 한 번에 할 수는 없을까 하는 생각에서 출발한 것이 바로 BOJ-extension이다.
MVP 출시
당시의 목표는 빠른 실행과 검증이었다. 거창한 기능보다는 당장 내가 코딩을 할 때 가려운 부분을 긁어줄 수 있는 핵심 기능들만 추려 MVP(Minimum Viable Product)를 빌드했다.
MVP 시절 기능
모든 기능은 ctrl(cmd)+shift+p(커맨드 팔레트)를 이용해서 접근했다.
문제 보기
첫 번째 기능은 웹뷰(WebView)를 통한 문제 정보 표시였다. 크롤링을 통해 얻은 문제를 웹뷰에서 표시하여, IDE 내에서 바로 문제를 확인할 수 있도록 구현했다.
문제 생성
두 번째 기능은 커맨드 팔레트를 통해 문제 번호를 적으면 자동으로 파일이 생성되는 기능이었다. 파일 이름은 문제 번호로 설정되었고, 파일 내부는 문제번호 and 언어에 따라 헤더가 작성되었다.
헤더 코멘트 삽입
세 번째 기능은 헤더 코멘트를 삽입하는 기능이었다. 42Seoul LaPiscine 과정 시절 자동으로 생성됐었던 헤더 코멘트 양식을 사용했다.
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_putchar.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: sanghule <sanghule@student.42seoul.kr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2022/08/25 10:46:41 by sanghule #+# #+# */
/* Updated: 2022/08/25 10:47:15 by sanghule ### ########.fr */
/* */
/* ************************************************************************** */
#include <unistd.h>
void ft_putchar(char c)
{
write(1, &c, 1);
}
->
# ************************************************************************** #
# #
# ::: ::: ::: #
# Problem Number: 1000 :+: :+: :+: #
# +:+ +:+ +:+ #
# By: dltkdgns00 <boj.kr/u/dltkdgns00> +#+ +#+ +#+ #
# +#+ +#+ +#+ #
# https://boj.kr/1000 #+# #+# #+# #
# Solved: 2025/04/03 01:21:49 by dltkdgns00 ### ### ##.kr #
# #
# ************************************************************************** #
A, B = map(int, input().split())
print(A + B)
운영과 피드백
마켓플레이스 등록
2023년 8월 2일, 마침내 VS Code 마켓플레이스에 BOJ-extension을 공식적으로 출시했다.
처음에는 그저 ‘내가 쓰려고 만든 김에 올려보자’는 가벼운 마음이었다. 거창하게 홍보를 한 것도 아니었기에 누군가 사용할 것이라는 큰 기대는 없었다. 하지만 놀랍게도 시간이 지나면서 대시보드의 다운로드 수가 하나둘씩 올라가기 시작했고, 깃허브 레포지토리에 찾아와 스타(Star)를 눌러주는 분들까지 생겨났다.
체인지로그(Changelog)와 성장
무엇보다 가장 뜻깊었던 경험은 유저들이 직접 남겨준 이슈(Issue) 리포트들이었다. 프로젝트의 체인지로그를 돌아보면, 다음과 같이 유저들의 생생한 피드백 덕분에 익스텐션을 더욱 견고하게 다듬을 수 있었다.
- Issue #11: 테스트 케이스 실행 시 문제 번호를 잘못 가져오는 버그 수정 (v1.3.5)
- Issue #15: 여러 언어로 문제 풀이 시 GitHub Actions가 오작동하는 문제 해결 (워크플로우 생성 시 언어 고정 제거)
- Issue #17: OS별 개행 문자 차이나 줄 끝 공백 때문에 테스트 케이스 채점이 어긋나던 출력 결과 비교 로직 개선 (v1.3.8)
이처럼 유저들의 버그 리포트를 확인하고, 원인을 분석해 코드를 수정한 뒤 새로운 버전을 배포하는 일련의 사이클은 나에게 아주 값진 경험이었다. 단순히 혼자 코딩하는 것을 넘어, 하나의 온전한 프로덕트를 운영하는 ‘진짜 개발자’의 즐거움을 알게 해 준 것이다.
이 작은 시작은 결과적으로 솔리드랩(SolidLab)이라는 브랜드를 빌드업하는 데 있어서 가장 의미 있는 첫걸음이 되었다.
2,200명의 사용자, 그리고 책임감
글을 작성하는 현재 기준으로, 마켓플레이스 누적 설치 수는 어느덧 2,200회를 돌파했다.
처음에는 그저 나와 주변 지인들 정도나 편하게 쓰면 좋겠다는 가벼운 마음으로 시작한 프로젝트였다. 하지만 어느새 2천 명이 넘는 개발자와 알고리즘 학습자들이 내가 짠 코드를 통해 매일 백준 문제를 풀고 있었다. 대시보드의 숫자가 늘어날수록 그저 신기하고 기뻤던 마음은 점차 ‘책임감’으로 변해갔다.
버전이 올라가고 기능이 추가될 때마다, 혹시라도 기존 유저들의 문제 풀이 환경을 망가뜨리지는 않을지 한 번 더 테스트하게 되었고, 코드의 구조와 품질에 대해서도 진지하게 고민하게 되었다. 혼자만의 사이드 프로젝트가 ‘진짜 서비스’로 탈바꿈하는 순간이었다.
한계점과 새로운 도약의 필요성
유저 수가 늘어나고 피드백이 쌓이면서 v1의 구조적인 한계도 명확해졌다. 빠른 검증과 출시에 목적을 두었던 MVP 형태였기에, 기능들이 하나둘 덧붙여질수록 코드는 점차 유지보수하기 어려운 스파게티 코드가 되어가고 있었다.
또한, 시대의 흐름에 맞춰 ‘단순한 채점 연동을 넘어, 유저가 작성한 코드를 AI가 실시간으로 리뷰해주면 얼마나 좋을까?’라는 새로운 목표가 생겼다. 하지만 v1의 낡은 뼈대 위에서는 이러한 대규모 기능 확장이 불가능에 가까웠다.
결국 나는 기존 익스텐션의 유지보수를 넘어, 프론트엔드와 백엔드 아키텍처를 바닥부터 완전히 새로 짜는 ‘v2 리팩토링 및 AI 도입’이라는 새로운 도전을 결심하게 되었다.
안녕 BOJ-extension, v1 은퇴식
예고 없이 찾아온 엔딩
그렇게 v2 출시를 위해 치열하게 코드를 갈아엎던 중, 백준의 채점 서비스 종료 및 아카이브 전환이라는 갑작스러운 소식을 마주하게 되었다.
솔직한 심정으로는 꽤나 당혹스럽고 허탈했다. 메인 트랙 자체가 사라져 버렸으니, 문제 크롤링과 실시간 채점 연동이 핵심인 BOJ-extension은 더 이상 생명력을 이어갈 수 없게 된 것이다. 외부 플랫폼에 종속된 서드파티 서비스가 필연적으로 마주할 수밖에 없는 뼈아픈 리스크를 온몸으로 체감한 순간이었다.
마무리하며
하지만 아쉬움만 남은 것은 결코 아니다. 메인 플랫폼의 변화로 인해 뜻하지 않게 마침표를 찍게 되었지만, 오히려 지금이 v1이 걸어온 길을 가장 박수 칠 때 기쁘게 갈무리할 수 있는 타이밍이라는 생각도 든다.
BOJ-extension v1은 나에게 개발과 운영의 진짜 재미를 알려준 일등 공신이었다. 나의 작은 불편함을 기술로 직접 해결해 내는 짜릿함을 알게 해주었고, 2,200명이 넘는 유저들과 소통하며 서비스를 성장시켜 나가는 궤적을 선물해 주었다. 비록 코드는 아카이브의 길을 걷게 되었지만, 이때 치열하게 다져진 경험치는 앞으로 솔리드랩(SolidLab)에서 만들어갈 수많은 프로덕트들의 가장 단단한 밑거름이 될 것이다.
그동안 BOJ-extension v1을 사랑해 주시고, 다운로드해 주시고, 소중한 피드백을 남겨주신 2,200명의 모든 유저분들께 진심으로 감사의 인사를 전한다.
다음 포스트에서는 비록 미완으로 남았지만, 아키텍처를 완전히 뒤엎고 AI 코드 리뷰 기능을 추가하며 더 큰 판을 꿈꿨던 BOJ-extension v2의 치열했던 기술적 고민과 열린 결말에 대해 다루도록 하겠다.