스프링 부트와 마이크로서비스 아키텍처의 완벽한 조합: 현대적 애플리케이션 개발의 핵심
·
BackEnd
스프링 부트와 마이크로서비스 아키텍처의 완벽한 조합: 현대적 애플리케이션 개발의 핵심목차소개스프링 부트란?마이크로서비스 아키텍처란?스프링 부트와 마이크로서비스의 시너지실제 구현 사례 및 패턴성능 최적화 전략마이크로서비스 관리와 모니터링자주 발생하는 문제점과 해결 방법결론참고 자료소개 {#소개}현대 소프트웨어 개발 환경에서 마이크로서비스 아키텍처는 확장성, 유연성, 그리고 개발 속도를 향상시키는 핵심 요소로 자리 잡았습니다. 이와 함께 스프링 부트(Spring Boot)는 자바 기반 애플리케이션 개발을 위한 강력한 프레임워크로, 마이크로서비스 구현을 위한 이상적인 도구로 각광받고 있습니다. 이 글에서는 스프링 부트와 마이크로서비스 아키텍처가 어떻게 완벽한 조화를 이루는지, 그리고 이를 통해 어떤 이점을 얻..
[Spring] 백엔드 면접 질문 정리 - 4
·
BackEnd
스프링 프레임워크의 주요 특징은 무엇인가요?스프링 프레임워크는 제어의 역전을 통한 의존성 주입이 가장 대표적인 특징입니다. 각 컴포넌트에서 필요한 의존성 주입을 프레임워크가 담당하여 처리해줍니다. 이것은 컴포넌트 스캔 방식을 통해 구현되어있습니다. 컴포넌트 스캔의 과정은 다음과 같습니다. 모든 컴포넌트 어노테이션을 스캔합니다. 이후 싱글톤 패턴으로 객체를 하나씩생성하고 컨테이너가 보관합니다. 이렇게 생성된 컴포넌트들은 각각 필요한 객체에 의존성으로 주입되거나 혹은 사용됩니다. 그리고 관점지향 프로그래밍이라는 개념을 통해 중복되는 코드와 로직, 혹은 비즈니스 로직과 상관없는 코드를 분리하기 용이하게 도와줍니다. 스프링 프레임워크는 POJO plain old java object로 이루어져 있으며 퓨어한 자..
[Java] 백엔드 면접 질문 정리 - 3
·
BackEnd
객체지향 프로그래밍의 4가지 원칙과 각각의 의미를 설명해주세요.캡슐화, 상속, 추상화, 다형성캡슐화: 객체 내부에 값을 감추고 내부 메서드 구현을 통해 객체 안정성 확보상속: 기존 클래스의 속성과 기능을 물려받아 새로운 클래스 정의추상화: 공통된 특성을 추출하여 개념이나 기능을 간추려 표현다형성: 캍은 메서드나 클래스가 다양한 방법으로 동작JVM의 구조와 동작 방식에 대해 설명해주세요.JVM 은 자바 버추얼 머신의 약자입니다. 자바 파일을 바이트 코드로 변환하고 이를 해석하고 동작시킵니다. 내부적으로 가비지 컬렉션을 구현하고있어, 사용하지 않는 메모리를 효과적으로 관리할 수 있습니다.자바소스코드 작성 -> 자바 컴파일러가 자바 소스코드를 클래스파일, 바이트코드로 변경 -> JVM이 실행되면 클래스 로더가..
[CS] 백엔드 면접 질문 정리하기 - 2
·
BackEnd
RESTful API가 뭔가요?RESTful API는 HTTP 프로토콜을 기반으로 자원(Resource)을 중심으로 설계된 웹 API 아키텍처입니다.자원은 고유한 URI로 식별됩니다.HTTP 메서드(GET, POST, PUT, DELETE)를 통해 자원에 대한 작업을 정의합니다.무상태성(Stateless)을 가지며, 각 요청은 독립적으로 처리됩니다.간단하고 일관된 인터페이스를 제공하여 클라이언트-서버 간 통신을 표준화합니다.예를 들어, 사용자 관리 API에서 /users 엔드포인트는 GET(조회), POST(생성), PUT(수정), DELETE(삭제) 등 다양한 작업을 지원할 수 있습니다. 데이터베이스의 인덱스가 뭔가요?데이터베이스 인덱스는 데이터를 빠르게 찾기 위해 사용하는 자료구조입니다. 책의 목차와..
[CS] 웹 서버(WS)와 웹 어플리케이션 서버(WAS)
·
BackEnd
웹 서버(Web Server)?웹 서버란, 클라이언트의 요청을 받아 HTML, CSS, 이미지와 같은 정적 리소스를 제공하는 서버입니다. 대표적으로 Apache와 Nginx가 있습니다. HTTP 요청 처리웹 서버는 클라이언트(브라우저, 모바일 앱 등)로부터 HTTP/HTTPS 프로토콜로 요청을 받습니다.예: 사용자가 웹사이트 주소를 입력하거나 링크를 클릭하면 HTTP 요청이 생성됩니다.정적 콘텐츠 제공HTML, CSS, JavaScript, 이미지, 동영상과 같은 변하지 않는 파일을 전달합니다.예: 블로그의 글이나 회사 홈페이지의 고정된 내용을 제공하는 데 사용됩니다.리버스 프록시(Reverse Proxy) 역할웹 서버는 직접 요청을 처리하지 않고, **웹 애플리케이션 서버(WAS)**로 전달합니다.예:..
[CS] 모놀리식 아키텍처와 마이크로서비스 아키텍처
·
BackEnd
모놀리식 아키텍처(Monolithic Architecture)란?모놀리식 아키텍처는 전통적인 소프트웨어 아키텍처 패턴으로, 하나의 애플리케이션 내에 모든 비즈니스 로직이 통합되어 있는 형태를 말합니다.특징단일 코드베이스: 모든 기능이 하나의 프로젝트에 통합단일 배포 단위: 전체 애플리케이션이 하나의 단위로 배포공유 데이터베이스: 모든 기능이 하나의 데이터베이스를 공유통합된 개발 환경: 하나의 기술 스택으로 전체 애플리케이션 개발장점개발의 단순성단일 프로젝트로 관리되어 개발 환경 설정이 간단IDE에서 전체 코드를 쉽게 탐색하고 디버깅 가능코드 재사용이 용이쉬운 배포하나의 파일 또는 디렉토리로 배포 가능배포 프로세스가 단순하고 명확성능서비스 간 통신 오버헤드가 없음단일 애플리케이션 내에서 직접 메서드 호출개..
[Backend] 헥사고날 아키텍처를 예제를 통해 쉽게 이해하기 - 유연하고 확장가능한 설계
·
BackEnd
헥사고날 아키텍처헥사고날 아키텍처라고 이름이 어려운 한 설계구조가 있다. 헥사고날 아키텍처(Hexagonal Architecture)는 2005년 Alistair Cockburn이 제안한 아키텍처 패턴이다. 포트와 어댑터 패턴(Ports and Adapters Pattern) 이라고도 부른다. 이 아키텍처의 핵심 목적은 애플리케이션을 외부 요소로부터 격리하여 도메인 로직을 보호하는 것이다.Port and Adapter Pattern포트와 어댑터 패턴은 무엇일까?쉽게 설명하면 포트는 추상화 어댑터는 구현체 라고 생각하면 이해하기 쉽다. 예를 들어, 나의 핸드폰이 C타입 충전기를 사용한다고 생각해보자.그렇다면 나의 핸드폰은 C타입만 호환되는 핸드폰이다. 여기서 C타입이 바로 포트와 어댑터 패턴에서 이야기하는..
백엔드 면접 질문 정리하기 - 1
·
BackEnd
저의 생각을 정리한거라서 답이 아닐 수 있습니다.동기와 비동기의 차이점동기: 호출된 함수가 작업을 완료하기 전까지 호출 함수가 대기합니다. 작업이 순차적으로 진행됨을 의미합니다.비동기: 동기와 반대되는 개념으로 호출된 함수가 작업을 완료할 때 까지 기다리지 않고 작업을 다음 작업을 진행합니다. 작업이 순차적으로 진행되지 않고 비동기 호출이라면 동시에 일어나지 않음을 의미합니다. 결론: 동기는 함수가 실행을하고 작업을 완료하기 전 까지 호출 함수가 대기합니다. 하지만 비동기는 이와 반대되는 개념으로 호출 함수가 작업완료를 기다리지 않고 다음 작업을 진행합니다. 동기: 호출된 함수가 실행을 하고 작업을 완료하기 전까지 호출함수가 대기합니다블로킹: 동기와 유사한 개념이지만 블로킹은 호출한 함수의 실행 결과를 ..