IT 55

[CS] Java의 final 키워드

Java의 final 키워드 : "한 번만 설정할 수 있다"는 제한을 의미 private final int age; private: 외부에서 접근 불가 (캡슐화)final: 값 변경 불가 (불변성 보장) → "외부에서 접근도 못 하고, 내부에서도 값을 한 번만 설정하는" 필드 final 키워드의 역할 final은 한 번 초기화되면 다시 값을 바꿀 수 없음즉, 이 변수는 생성자 또는 선언 시에만 초기화 가능이후에는 값을 변경(재할당) 할 수 없음 public class Person { private final String name; public Person(String name) { this.name = name; // ✔ 가능: 생성자에서 한 번만 초기화 } pub..

IT/CS 공부 2025.08.01

[CS] Graceful Shutdown(우아한 종료)

Graceful Shutdown(우아한 종료) 이란?서버 애플리케이션이 종료될 때, 처리 중인 작업을 마무리하고 리소스를 정리한 후 안전하게 종료하는 방식갑작스럽게 서버를 종료하는 경우 발생할 수 있는 데이터 손실, 트랜잭션 중단, 사용자 불편 등을 방지일반적으로 SIGTERM 시그널을 받으면, 서버는새로운 요청은 받지 않고현재 처리 중인 요청은 모두 완료한 뒤프로세스를 종료함 Graceful Shutdown이 필요한 이유사용자 요청 도중 서버가 즉시 꺼질 경우, 트랜잭션 실패 또는 데이터 유실 발생 가능DB 연결, 파일 핸들 등 리소스가 정리되지 않으면 자원 누수 발생사용자 경험이 저하되며, 시스템 안정성에도 부정적인 영향운영 환경에서 서비스 무중단 배포나 롤링 업데이트에도 필수적인 개념 SIGTER..

IT/CS 공부 2025.07.03

[CS] CQRS 패턴 (Command Query Responsibility Segregation)

CQRS(Command Query Responsibility Segregation)명령(Command)과 조회(Query)의 책임을 분리하는 소프트웨어 설계 패턴 시스템에서 처리하는 작업 종류명령(Command): 시스템의 상태를 변경하는 작업예: 주문 생성, 주문 취소, 결제 처리조회(Query): 시스템의 상태를 읽기만 하는 작업예: 주문 내역 조회, 사용자 정보 확인CQRS의 핵심 개념명령 모델과 조회 모델을 각각 별도로 분리하여 관리한다.하나의 리소스를 명령용과 조회용 두 개의 모델로 나눌 수 있다.예: Order (명령 모델), OrderData (조회 모델)명령 모델은 변경 작업에 집중하고, 조회 모델은 데이터 출력을 최적화할 수 있다.예시: 쇼핑몰 주문 시스템Order: 주문 생성, 결제 처..

IT/CS 공부 2025.06.27

[CS] CI/CD 파이프라인

CI/CD 파이프라인1. CI/CD를 왜 하는가?코드 변경의 위험을 줄이기 위해개발자마다 작업한 코드를 합치다 보면 충돌 발생 가능코드 통합 시점마다 자동으로 테스트하여 오류를 사전에 발견배포 속도를 빠르게 하기 위해수동 배포는 시간과 리소스 낭비, 실수 위험이 큼자동화된 빌드 및 배포를 통해 신속한 기능 릴리스 가능서비스 품질을 유지하기 위해자동화된 테스트를 통해 코드 품질과 안정성 확보변경 사항이 실제 환경에 미치는 영향을 조기에 검증개발-운영 간 협업 효율성 향상코드 커밋만으로 자동 빌드/테스트/배포 가능운영자는 배포 도구만 관리하고, 개발자는 기능에 집중 가능2. 핵심 개념 정리지속적 통합 (CI: Continuous Integration)여러 개발자가 자주 변경한 코드를 공통 저장소에 지속적으로..

IT/CS 공부 2025.06.26

[CS] 코드 커버리지(Code Coverage)

코드 커버리지(Code Coverage)1. 코드 커버리지란?테스트 코드가 실제 애플리케이션 코드를 얼마나 실행했는지를 수치로 표현한 지표테스트가 코드 전체에 얼마나 영향을 미치는지 확인 가능코드 안정성, 테스트 신뢰성을 평가하는 데 활용2. 코드 커버리지가 중요한 이유테스트가 작성되었더라도, 모든 코드 경로가 테스트되는 것은 아님테스트의 범위와 누락된 부분을 식별할 수 있음코드 리팩토링 시, 테스트 커버리지로 안전성 확인 가능3. 코드 커버리지의 주요 종류3-1. 구문 커버리지 (Statement Coverage)코드의 각 줄(라인)이 실행되었는지를 확인가장 기본적인 커버리지예: 5줄의 코드 중 5줄 모두 실행되면 100% 달성public void sayHello(String name) { Sys..

IT/CS 공부 2025.06.26

[CS] 의존성 주입(DI : Dependency Injection)

의존성 주입(Dependency Injection)이란?객체 간의 의존 관계를 외부에서 설정해주는 설계 방식.객체 A가 작업 수행을 위해 객체 B가 필요 할 때, B를 A 내부에서 생성하는 것이 아니라 외부(C)에서 생성한 후 A에 주입한다.이를 통해 A와 B 간의 결합도를 낮춰 유연하고 테스트 가능한 구조를 만든다.의존성 구성 요소구성 요소설명의존성 (Dependency)A가 사용하려는 객체 = B (예: OrderRepository)의존성 소비자 (Dependent)의존성을 사용하는 객체 = A(예: OrderService)주입자 (Injector)의존성을 생성하고 소비자에게 주입하는 외부 객체 =C (예: Spring 컨테이너)의존성 주입이 필요한 이유변경에 유연한 구조를 만들기 위함 (OCP 원칙..

IT/CS 공부 2025.06.23

[CS] 스프링 트랜잭션 AOP 동작 흐름

스프링 트랜잭션 AOP 동작 흐름아래 세 가지 주요 요소가 관여트랜잭션 매니저 (Transaction Manager)트랜잭션 AOP 프록시 (AOP Proxy)트랜잭션 동기화 매니저 (TransactionSynchronizationManager)📍전체 흐름 설명클라이언트가 @Transactional이 선언된 메서드를 호출하면, 스프링은 AOP 프록시 객체를 통해 호출을 가로챈다.프록시 객체가 먼저 호출을 가로채서 TransactionInterceptor가 동작프록시는 내부적으로 TransactionInterceptor를 호출하고, 트랜잭션을 시작해야 하는지 여부를 판단한다.트랜잭션이 필요하다고 판단되면, 스프링은 PlatformTransactionManager(T)를 통해 트랜잭션을 시작한다.JDBC ..

IT/CS 공부 2025.06.23

[CS] 정적 IP 주소 할당 방식과 동적 IP 주소 할당 방식

IP 주소 할당이 필요한 이유네트워크에서는 각 장치(호스트) 가 서로 통신하려면 식별자(IP 주소) 가 필요역할데이터의 목적지를 식별라우팅 경로 설정특정 서비스로 접근 (웹서버, DB 등)IP 주소 할당 방식의 종류정적 IP 할당 (Static IP Assignment) 정적 IP 할당 (Static IP Assignment)네트워크 관리자가 수동으로 직접 IP를 설정항상 동일한 IP 사용예: 서버, 라우터, DNS, CCTV 등 고정된 위치에 있어야 하는 장비 ✅장점항상 같은 IP로 접근 가능 → 서버나 DB에 적합DNS, 방화벽, 로드밸런서 구성에 용이❌ 단점장비가 많아질수록 관리가 복잡사람이 수동으로 설정 → 중복 오류, IP 충돌 위험유연하지 않음 (노트북, 모바일에는 부적합)동적 IP 할당 (..

IT/CS 공부 2025.06.19

[CS] 단일 장애 지점(SPOF)

단일 장애 지점(SPOF : Single Point of Failure)시스템 내에서 단 하나의 장애로 전체 시스템이 중단될 수 있는 구성 요소ex) API 서버가 한 대뿐이라면 해당 서버가 OOM(Out Of Memory) 또는 네트워크 장애로 다운-> 전체 서비스가 중단 서버 이중화로 SPOF 제거하기여러 대의 서버에 동일한 애플리케이션을 배포하고, 앞단에 로드 밸런서를 배치해 트래픽을 분산하나의 서버가 고장 나더라도 나머지 서버가 요청을 처리할 수 있어 고가용성(High Availability, HA) 을 확보할 수 있음이중화 시 점검해야 할 항목과 상세 설명임계 구역(Critical Section) & 동시성 문제임계 구역이란?여러 스레드나 프로세스가 동시에 접근하면 안 되는 공유 자원을 사용하..

IT/CS 공부 2025.06.19

[CS] JWT(Json Web Token)

JWT(Json Web Token)JWT(Json Web Token) 는 인증과 인가를 위해 사용되는 클레임 기반의 토큰 포맷입니다.JSON 형식의 데이터를 Base64Url로 인코딩한 문자열로,주로 사용자 인증 정보 및 권한 정보를 담아 서버와 클라이언트 간에 안전하게 전송하는 데 사용됩니다. JWT 구조JWT는 세 부분으로 구성..Header어떤 알고리즘으로 서명했는지, 어떤 타입의 토큰인지 명시{ "alg": "HS256", "typ": "JWT"}Payload (Claim)실제 전송할 데이터가 담깁니다.표준 클레임 (iss, exp, sub, aud 등) + 커스텀 클레임 (userId, role 등)을 포함할 수 있습니다.{ "sub": "user123", "exp": 171891648..

IT/CS 공부 2025.06.17