2025/03 40

CAP 이론, 그리고 BASE 원칙이란?

분산 시스템은 여러 컴퓨터 노드가 하나의 통합된 시스템처럼 동작하도록 구성된 환경이다. 하지만, 네트워크 지연이나 일부 노드의 장애 등 다양한 문제에 직면할 수 있기에, 시스템 설계자는 이러한 제약 조건을 고려한 원칙에 따라 트레이드오프를 명확히 이해하고 선택해야 한다.CAP 이론CAP 이론은 분산 시스템 설계 시 고려해야 할 세 가지 핵심 요소 간의 상호작용을 설명한다.Consistency (일관성)모든 노드가 동일한 데이터를 동시에 반영하여, 사용자에게 항상 최신의 일관된 정보를 제공하는 상태를 유지한다.Availability (가용성)시스템이 모든 요청에 대해 항상 응답할 수 있도록 보장한다. 일부 노드에 장애가 발생하더라도 전체 시스템은 계속 운영된다.Partition Tolerance (분할 허..

백엔드 개발자가 알아야 할 소프트웨어 공학 관련 면접 질문

1. 마이크로서비스 아키텍처(MSA) vs 모놀리식 아키텍처마이크로서비스 아키텍처 (MSA)마이크로서비스 아키텍처는 애플리케이션을 독립적인 서비스 단위로 분리하여 운영하는 방식을 의미한다.장점독립적 배포 및 확장: 각 서비스는 별도로 배포 및 확장이 가능하여, 필요에 따라 개별적으로 조정할 수 있다.장애 격리: 하나의 서비스에 장애가 발생해도 전체 시스템에 미치는 영향을 최소화할 수 있다.기술 선택의 유연성: 서비스마다 최적의 기술 스택을 선택할 수 있어 개발 환경에 유연하게 대응할 수 있다.단점운영 및 모니터링 부담 증가: 서비스 수가 늘어남에 따라 운영, 모니터링 및 로깅 체계가 복잡해진다.테스트 난이도 상승: 분산 환경에서의 통합 테스트 및 서비스 간 상호작용 테스트가 어려워진다.구현 및 운영 복잡..

백엔드 개발자가 알아야 할 기초 보안 - 인증, 인가, OAuth, OpenID Connect

1. 인증과 인가인증 (Authentication)정의: 사용자가 주장하는 신원을 확인하는 절차이다.목적: 사용자로부터 제공된 정보를 바탕으로, 실제로 해당 사용자인지 검증한다.인가 (Authorization)정의: 인증된 사용자가 특정 리소스에 접근할 권한이 있는지를 확인하는 절차이다.목적: 인증을 마친 사용자에게 적절한 접근 권한을 부여하여 시스템 자원의 보안을 유지한다.2. 암호화 방식 및 특징대칭 키 암호화원리: 암호화와 복호화에 동일한 키를 사용한다.장점: 연산 속도가 빠르며 대용량 데이터 암호화에 효율적이다.단점: 키의 분배와 관리가 취약하여, 키 노출 시 전체 보안에 심각한 영향을 미친다.공개 키 암호화원리: 서로 상보적인 공개 키와 개인 키를 사용하여 암호화와 복호화를 수행한다.장점: 키 ..

OSI 7 Layer, TCP/IP 4 Layer, 그리고 HTTP와 HTTPS

1. 계층 모델1.1 OSI 7계층OSI 7계층은 네트워크 통신의 각 기능을 계층별로 분리하여 정의한 모델이다. 각 계층은 아래와 같이 역할을 수행한다.물리 계층 실제 전송 매체를 통해 비트 단위의 데이터 전송을 담당한다.전기 신호, 광 신호, 무선 주파수 등을 사용하여 데이터 전송이 이루어진다.데이터 링크 계층 물리 계층에서 전송된 데이터를 프레임 단위로 관리하며, 오류 검출 및 수정 기능을 수행한다.MAC 주소 등을 이용한 노드 간의 통신을 지원한다.네트워크 계층 데이터를 패킷 단위로 관리하며, 최적의 경로를 선택해 목적지까지 전달하는 라우팅 기능을 담당한다.IP 주소를 사용하여 패킷의 출발지와 도착지를 지정한다.전송 계층 종단 간 데이터 전송의 신뢰성과 순서를 보장하기 위한 연결 설정, 데이..

프로세스와 스레드, 교착 상태

아래 내용은 면접을 대비한, 간단하게 정리된 프로세스와 스레드, 교착 상태에 대한 내용이다.프로세스와 스레드프로세스정의: 실행 중인 프로그램의 독립된 인스턴스이다.특징:각 프로세스는 별도의 메모리 공간과 시스템 자원을 보유한다.다른 프로세스와의 통신은 주로 IPC(Inter-Process Communication)를 통해 이루어진다.의의: 시스템 안정성과 보안을 위해 프로세스 간의 강한 격리를 제공한다.스레드정의: 하나의 프로세스 내에서 실행되는 경량 작업 단위이다.특징:동일 프로세스 내의 스레드들은 메모리 공간과 자원을 공유한다.스레드 간 전환 비용이 낮아 효율적으로 작업을 수행할 수 있다.한 프로세스 내에서 여러 스레드를 사용하여 병렬 처리가 가능하다.의의: 자원 공유와 빠른 전환을 통해 응용 프로그..

Java 의 주요 자료구조 - ArrayList & Hash Map

ArrayList의 동작 방식ArrayList는 내부적으로 배열을 사용하여 데이터를 저장하며, 그 작동 원리는 다음과 같다.내부 배열 관리데이터를 순차적으로 저장하는 배열을 사용한다.배열은 일정한 용량(Capacity)을 가지며, 초기 용량은 지정할 수 있다.용량 확장 방식add 연산 시 남은 공간이 없으면, 현재 용량의 50%를 추가하여 새로운 배열을 생성한다.이 과정에서 기존 배열의 내용을 arraycopy 메서드를 사용하여 새로운 배열로 복사한다.용량 확장 시 복사로 인한 성능 오버헤드가 발생하지만, 대부분의 삽입 연산은 평균적으로 O(1)의 시간 복잡도를 유지한다.참고로, C++의 vector는 용량을 두 배로 늘리는 방식으로 확장하는 점에서 차이가 있다.해시테이블의 작동 원리 및 충돌 해결 방법..

Article 2025.03.09

WAS 성능 최적화 전략

1. 자바 애플리케이션 성능 최적화자바 애플리케이션의 성능을 극대화하기 위해서는 아래와 같은 다양한 접근 방법을 동시에 고려해야 한다.JVM 상태 분석프로파일링 및 모니터링 도구(JVisualVM, YourKit 등)를 활용하여 애플리케이션의 런타임 상태를 분석한다. 이를 통해 병목 현상, 메모리 사용량, 스레드 동작 등을 파악할 수 있다.GC 튜닝가비지 컬렉션(GC) 로그를 분석하고, GC 옵션을 조정하여 불필요한 pause 시간을 줄인다. 상황에 따라 CMS, G1, ZGC 등 다양한 GC 방식을 테스트하여 최적의 성능을 도출한다.JVM 파라미터 조정힙 메모리 크기, 스택 크기, JIT 컴파일러 옵션 등 JVM의 다양한 파라미터를 상황에 맞게 조정하여 최적의 실행 환경을 구성한다.위와 같은 방법들을 ..

WEB BE Repo 2025.03.08

스프링이란?

스프링스프링은 자바 기반의 애플리케이션 개발을 위한 경량 프레임워크로, 모듈 간 결합도를 낮추고 유지보수를 용이하게 하는 다양한 기능을 제공한다. 스프링은 핵심 기능인 IoC(Inversion of Control)와 DI(Dependency Injection)를 중심으로 작동하며, AOP(Aspect Oriented Programming)를 비롯한 여러 부가기능을 지원한다.스프링 프레임워크의 주요 특징스프링은 다음과 같은 주요 특징을 갖고 있다:IoC와 DI를 통한 결합도 감소스프링 컨테이너는 객체의 생성, 관리, 라이프사이클을 담당함으로써 개발자가 직접 객체를 생성하고 의존성을 관리할 필요를 줄여준다. 이를 통해 컴포넌트 간의 결합도를 낮추고, 유지보수와 확장이 용이한 애플리케이션을 구현할 수 있다.I..

WEB BE Repo/Spring 2025.03.08

백엔드 개발자를 위한 HTTP 기본 지식

1. RESTful API의 개념 및 설계 원칙RESTful API는 클라이언트와 서버 간의 역할을 명확히 분리하여 각 구성 요소가 독립적으로 발전할 수 있도록 설계된 아키텍처이다. 다음의 원칙들이 핵심이다.클라이언트-서버 구조클라이언트와 서버가 서로의 구현에 영향을 받지 않고 독립적으로 변경될 수 있도록 역할을 분리한다.무상태성(Stateless)서버는 클라이언트의 상태를 저장하지 않으며, 각 요청은 독립적으로 처리된다. 실제 개발 환경에서는 세션 등을 사용해 상태를 관리하기도 하지만, REST의 기본 원칙은 무상태를 유지하는 것이다.캐시 처리 가능(Cacheable)응답 데이터는 캐시될 수 있어, 네트워크 부하를 줄이고 성능을 개선할 수 있다.일관된 인터페이스(Uniform Interface)클라이언..

면접 대비용 데이터베이스 정리

1. 관계형 데이터베이스의 정규화정규화는 데이터베이스 설계 시 데이터 중복을 최소화하고 삽입, 수정, 삭제 이상 현상을 제거하며 데이터 무결성을 유지하기 위한 일련의 과정이다. 정규화 과정을 통해 저장 공간을 효율적으로 사용하고, 일관된 데이터 관리를 보장할 수 있다.정규화의 장점데이터 중복 최소화: 동일 데이터의 반복 저장을 피하여 저장 공간을 절약한다.이상 현상 제거:삽입 이상, 수정 이상, 삭제 이상을 방지한다.데이터 무결성 유지: 데이터의 정확성과 일관성을 보장한다.저장 공간 효율적 사용: 불필요한 중복 저장을 제거하여 공간을 절약한다.정규화의 단점JOIN 연산 필요: 여러 테이블로 분리된 데이터를 조회할 때 복잡한 JOIN 연산이 필요해 성능 저하의 원인이 될 수 있다.2. 비정규화비정규화는 정..

CS Repo/DB 2025.03.07