06. API Gateway 서버 제작 (1)
·
Web/코테 준비용 서비스 만들기
API Gateway 서버 구조도 위 구조는 Controller를 중심으로 각 구성 요소가 연결되는 방식이다. 각 구성 요소는 다음과 같은 역할을 수행한다.Controller: 전형적인 REST API 서버의 컨트롤러 역할을 하며, 클라이언트의 요청을 받아 처리한다. 클라이언트 요청을 적절한 서비스로 전달하여 결과를 반환한다.Spring Security: 인증 및 권한 관리를 담당하는 보안 계층이다. Session을 통해 사용자 세션을 관리하며, 인증된 사용자만 API를 사용할 수 있도록 제한한다.Session: 사용자 인증 상태를 유지하는 세션 관리 시스템이다. 사용자가 로그인한 후 생성되며, Spring Security를 통해 접근이 관리된다.User Service: 사용자 정보 관리와 인증을 담당하..
04. 코드 API 서버 제작
·
Web/코테 준비용 서비스 만들기
Code-API 서비스 전체 구조 위 구조는 CodeController를 중심으로 각 구성 요소가 연결되는 방식이다. 각 구성 요소는 다음과 같은 역할을 수행한다.CodeController: 전형적인 REST API 서버의 컨트롤러 역할을 하며, 클라이언트 요청을 받아 처리한다. 클라이언트에서 전달된 코드 실행 요청을 CodeService로 전달하고, 결과를 반환한다.CodeService: 코드 실행 로직의 핵심 서비스 계층이다. 요청받은 언어에 맞게 Runner 인터페이스의 구현체를 선택하고, 적절한 컴파일러 또는 인터프리터를 호출하여 코드를 실행하도록 한다.Runner: 각 언어의 코드 실행을 위한 인터페이스로, 언어별로 다른 실행 방식을 처리할 수 있도록 한다.JavaRunnerImpl / Pyth..
02. 서비스를 구상해보자!
·
Web/코테 준비용 서비스 만들기
서비스 설계 방안  이 서비스는 효율적인 코딩 테스트 준비를 위한 플랫폼으로, 사용자가 작성한 코드를 컴파일하고 실행해 결과를 확인할 수 있는 기능과 코드 관리, 플랫폼 간 문제 스크래핑, AI 기반 코드 최적화 기능을 제공하는 것을 목표로 한다. 서비스는 MSA(Microservices Architecture) 형태로 개발 예정이며, 각 마이크로서비스는 독립적으로 운영되도록 설계하였다. 서비스 구성 요소 및 기능1. 코드 작성 및 컴파일 기능  사용자가 작성한 코드를 컴파일하고 실행한 후, 결과를 반환하는 기능을 제공한다. 해당 서버에 설치된 각 언어별 컴파일러나 인터프리터를 통해 빠르고 안정적으로 코드 실행 및 결과 반환이 가능하다.2. 코드 저장 및 관리 기능  사용자가 작성한 코드를 저장하고 관리..
01. 코테 준비를 위한 서비스를 만들어보자!
·
Web/코테 준비용 서비스 만들기
서비스 개발 배경  코딩 테스트 준비는 개발자라면 거의 필수인 과정이다. 여러 회사에서 프로그래머스 플랫폼을 통해 코딩 테스트를 진행하므로 자연스럽게 이 플랫폼에 익숙해질 수밖에 없다. 프로그래머스는 회사별, 난이도별로 문제들이 잘 정리되어 있어 준비가 편리한 장점이 있지만, 알고리즘별로 문제가 정리되어 있지 않고 문제 수가 적다는 단점이 있었다.  그렇기 때문에, 문제 수가 많고 다양한 유형의 문제를 제공하는 백준 플랫폼을 사용하여 연습해보려 했으나, 백준은 프로그래머스와 문제 풀이 방식이 달라 불편함이 있었다. 백준 플랫폼의 불편함문제 풀이 환경의 차이: 백준은 프로그래머스처럼 문제를 보면서 바로 코딩하고 실행해볼 수 있는 웹 에디터를 제공하지 않기 때문에, 외부 IDE를 필수로 사용해야 했다.외부 ..
[Spring Boot] 예외 처리 라이브러리 만들기 (3)
·
Web/Spring Boot 예외 처리
앞서 설명한 방식에 한계를 느끼고 예외들을 클래스가 아닌 yml 파일로 작성하여 사용하는것이 좀더 간편하고 유연하지 않을까?라는 생각을 하게 되었고 이 글에서 해당 내용을 작성해보려한다. 예외 처리 라이브러리 로직먼저, 앱에서 사용할 커스텀 예외들을 통칭하는 BizException 클래스를 생성한다.@Getterpublic class BizException extends RuntimeException { private final String key; public BizException(String key) { super(key); this.key = key; }} 해당 클래스는, yml에서 설정한 예외들을 선택할 key 값을 가지고 있다. @Getter@ToStr..
[Spring Boot] 예외 처리 라이브러리 만들기 (2)
·
Web/Spring Boot 예외 처리
이번 글에서는 예외처리를 수행하는 예시에 대해서 적어보려한다. 커스텀 예외 생성 및 핸들러 등록먼저, 기본적으로 재사용이 가능하도록 RuntimeException을 상속받는 어플리케이션 Exception을 생성한다.@Getter@ToString@RequiredArgsConstructorpublic class PeachPickerException extends RuntimeException { private final ErrorProperty errorProperty; private String message; public PeachPickerException(String message, ErrorProperty errorProperty) { this.message = mess..