Online Code platform API
온라인 코드 실행 및 공유 플랫폼 API 설계
개요
개발자들이 코드를 작성하고 실행할 수 있는 플랫폼을 설계해야 합니다. 사용자는 다양한 프로그래밍 언어로 코드를 실행할 수 있으며, 실행 결과를 저장하고 공유할 수 있습니다.
요구사항
1. 사용자(User) 기능
코드 작성 및 실행
실행 결과 저장 및 조회
실행된 코드 공유 (비공개/공개 설정 가능)
특정 사용자의 코드 실행 기록 조회
2. 관리자(Admin) 기능
실행 환경(지원하는 프로그래밍 언어 및 버전) 관리
악성 코드 탐지 및 차단
과부하 방지를 위한 실행 제한 정책 설정
1. 엔드포인트 설계
코드 실행 및 저장 (POST) - /codes/execute
코드 조회(GET) - /codes/{codeId}
코드 실행 결과 조회(GET) - /codes/{codeId}/results
사용자의 코드 실행 이력 조회(GET) - /users/{userId}/codes
코드 삭제(DELETE) - /codes/{codeId}
코드 공유 URL 생성(POST) - /codes/{codeId}/share
공유된 코드 조회(GET) - /codes/share/{shortenUrl}
2. 응답/요청 설계
코드 실행 및 저장 (POST) - /codes/execute
코드 조회(GET) - /codes/{codeId}
코드 실행 결과 조회(GET) - /codes/{codeId}/results
사용자의 코드 실행 이력 조회(GET) - /users/{userId}/codes
코드 삭제(DELETE) - /codes/{codeId}
코드 공유 URL 생성(POST) - /codes/{codeId}/share
공유된 코드 조회(GET) - /codes/share/{shortenUrl}
3. DB 모델링
user
id. BIGINT, PK. 유저 id
languages
id BIGINT PK
name VARCHAR(50)
version VARCHAR(20)
codes
id BIGINT PK
user_id BIGINT FK(users.id)
language_id BIGINT FK(languages.id)
code TEXT
createdAt DATETIME
modifiedAt DATETIME
execution_results
id BIGINT PK
code_id BIGINT FK(codes.id)
result TEXT
executionTime INT
memoryUsage FLOAT
status ENUM('success', 'error')
createdAt DATETIME
shared_codes
id BIGINT PK
code_id BIGINT FK(codes.id)
shortenUrl TEXT
createdAt DATETIME
아키텍처 고려
API 서버 (Spring Boot)
사용자 요청 처리 (코드 실행, 저장, 조회, 공유)
RESTful API 제공
DB와 Redis 캐싱 연동
코드 실행 서버 (Sandboxed Execution)
언어별로 컨테이너(Docker) 실행 환경 제공
실행 요청을 받아 격리된 환경에서 실행
실행 결과를 API 서버에 반환
데이터베이스 (MySQL)
코드, 실행 결과, 사용자 정보 저장
캐싱 서버 (Redis)
단축 URL 캐싱
자주 조회되는 코드 실행 결과 캐싱
Last updated