본문 바로가기
프로그래밍

프로그래밍 「 전문 편」VS Code용 다국어 온라인 컴파일러 작성 1부: 아키텍처

by grapedoukan 2023. 6. 11.
728x90

Visual Studio Code에서 코드를 작성하는 것을 좋아합니다. 때로는 일부 언어에 대한 컴파일러를 설치 및 설정하고 작동시키는 것이 고통 스럽습니다. 그래서 한 가지 아이디어가 떠올랐습니다.

아무것도 설치하지 않고 API 호출을 통해 코드를 컴파일 할 수 있다면 어떨까요? 물론, 여러 파일로 거대한 프로젝트를 컴파일 할 필요는 없지만 프로그래밍 언어를 신속하게 시도하거나 코딩 경쟁을 위해 일부 코드를 컴파일하기 위해 작은 코드 스 니펫을 컴파일하는 것을 만들 수 있다고해도 좋은 학습 경험이 될 것입니다.

나는 그러한 컴파일러를 구축하는 나의 사고 과정과 여정을 여러분과 공유하기 위해 이 기사를 썼습니다. 이 튜토리얼은 4부로 나뉘며, 그렇지 않으면 다루기에는 너무 많고 받아들이기에는 너무 많을 것입니다. 건배!

요구 사항:

모든 시스템 설계 문제와 마찬가지로 첫 번째 단계는 시스템이 지원해야 하는 기능을 명확하게 정의하는 것입니다.

우리의 경우 2 가지 주요 사항이 있습니다.

  1. 파일 확장자를 기반으로 프로그래밍 언어를 자동으로 감지합니다.
  2. 코드와 필요한 입력으로 해당 API를 호출하고 결과를 표시합니다.

공격 계획:

아키텍처

사용자가 코드 작성을 마치면 '실행' 명령을 누를 수 있습니다.

그러면 프록시에 API 요청이 이루어집니다. 프록시 서버를 사용하는 이유는,

1. 여러 프로그래밍 언어 서버에 대한 단일 URL을 가질 수 있습니다.

2. 필요한 경우 로드 밸런서 역할을 하도록 만들 수 있습니다.

3. API 요청 인증 및 권한 부여를 처리할 수 있습니다.

그런 다음 프록시 서버는 역방향 프록시 역할을 하고 요청을 올바른 언어 컴파일러 서비스로 리디렉션할 수 있습니다.

역방향 프록시는 다른 웹 서버 앞에 위치하여 클라이언트 요청을 해당 웹 서버로 전달하는 서버입니다.

각 프로그래밍 언어에는 특정 언어를 컴파일/해석하는 데 필요한 모든 라이브러리와 컴파일러가 설치된 언어 컴파일러 서비스가 있습니다.

 

프록시 서버는 어떤 언어를 어떻게 알 수 있습니까?

우리의 요청은 다음 본문을 가진 POST 요청이 될 것입니다.

프록시 서버는 단순히 언어 필드를 보고 요청을 리디렉션할 서버를 파악합니다.

네, 이것이 우리 컴파일러 시스템의 아키텍처입니다. 다음 부분에서는 요청을 받아 안전한 환경에서 컴파일하고 출력을 뱉어낼 수 있는 언어 서버를 구축하는 것으로 시작합니다.

728x90