목록분류 전체보기 (57)
백엔드 개발자

1. DNS란?Domain Name System인터넷의 주소록이자 분산형 계층적 데이터베이스 시스템사람이 기억하기 쉬운 도메인 이름 ↔ 컴퓨터가 사용하는 IP 주소 간 매핑 수행2. DNS는 분산형 데이터베이스이다DNS는 도메인 이름에 대한 IP를 저장하고 있는 데이터베이스라고 할 수 있다.분산형 데이터베이스. 왜 분산형인가?도메인 이름을 통해 모든 요청은 DNS를 거치게 될 것이다.단일 서버에 모든 정보를 저장하면,확장성, 가용성, 속도, 신뢰성 문제가 발생한다.그래서 DNS는 다음과 같은 특성을 가진다:분산성전 세계적으로 수많은 DNS 서버가 정보를 나눠 가짐계층적 구조루트 → TLD → SLD → 하위 도메인권한 위임 (Delegation)각 단계마다 자신이 책임지는 도메인만 관리캐싱 (Cache)..

1. 형상 관리란?형상 관리(Configuration Management)는 소프트웨어 개발 및 운영 과정에서 코드, 문서, 설정 파일 등 모든 시스템 구성요소의 변경을 체계적으로 관리하는 활동이다.=> 쉽게 말하면 "내가 만든 코드나 시스템이 언제, 왜, 누가, 어떻게 바뀌었는지 기록하고 관리하는 것" 이다.주요 목적일관성 유지: 코드, 문서, 설정 값 등이 원하는 상태로 유지변경 관리: 변경 이력을 기록하고 추적품질 보증: 의도하지 않은 변경이나 오류 방지협업 지원: 충돌 없이 효율적으로 협업 가능재현성 확보: 과거 특정 시점으로 시스템 복원 가능2. 형상 관리 프로세스형상 식별: 관리할 항목 정의 (코드, 문서, 설정 등)형상 통제: 변경 요청 승인 및 반영형상 상태 기록: 현재 상태와 변경 이력 ..
OWASP(Open Web Application Security Project)는 웹 애플리케이션 보안 강화를 목적으로 하는 비영리 단체로,OWASP Top 10은 가장 흔하고 위험한 보안 취약점을 정리하여 발표한다.3,4년 주기로 발표하는데 이를 숙지하면 보안 사고를 예방하고, 애플리케이션의 보안성을 강화하는 데 도움이 될 수 있다.21년에 발표된 OWASP Top 10을 간단히 살펴보자. A01:2021 – Broken Access Control (취약한 접근 제어)설명:권한이 없는 사용자가 다른 사용자의 데이터나 기능에 접근할 수 있는 취약점.공격 예시:URL 조작 (Forced Browsing)사용자가 /user/profile에서 자신의 정보를 확인하는 API가 있다고 가정.서버에서 사용자 ID를..

1. 가비지 컬렉션(GC)이란?GC의 개념가비지 컬렉션(Garbage Collection, GC)이란 프로그램 실행 중 필요 없어진 객체를 자동으로 정리하는 메모리 관리 기법이다. Java에서는 JVM(Java Virtual Machine)이 자동으로 GC를 수행하여 개발자가 직접 메모리를 해제할 필요 없이 효율적으로 메모리를 관리할 수 있다.GC의 역할메모리 누수 방지: 사용되지 않는 객체를 자동으로 제거하여 메모리 부족을 방지한다.개발 생산성 향상: 개발자가 직접 메모리 관리를 하지 않아도 된다.안전성 증가: 잘못된 메모리 접근(예: 해제된 객체 접근)으로 인한 오류를 방지한다.GC의 대상이 되는 JVM 영역JVM의 메모리는 여러 영역으로 나뉘며, GC는 Heap 영역을 대상으로 동작한다.Heap 영..

구조 패턴(Structural Patterns)은 객체나 클래스를 조합하여 더 큰 구조를 만드는 데 초점을 둔다.그래서 유지보수성과 확장성을 고려하여 코드의 결합도를 낮추고 재사용성을 높이는 역할을 한다.1. 어댑터 패턴(Adapter Pattern)어댑터 패턴은 서로 다른 인터페이스를 가진 클래스들이 함께 동작할 수 있도록 중간에 변환기를 두는 패턴이다.즉, 기존 코드의 변경 없이 새로운 기능을 추가할 때 유용하다.구현 방법기존 인터페이스와 호환되지 않는 클래스를 새 인터페이스에 맞게 변환하는 역할을 한다.인터페이스 기반의 어댑터 또는 객체 기반의 어댑터를 사용할 수 있다.특징코드 변경 없이 다른 클래스와 연동 가능.기존 시스템을 수정하지 않고 확장 가능.클래스 어댑터(상속 사용)와 객체 어댑터(위임 ..
디자인 패턴은 효율적이고 유지보수하기 쉬운 코드 구조를 만들기 위한 설계 원칙.그중에서도 행동(Behavioral) 패턴은 객체 간의 상호작용 및 책임 분배를 최적화하는 패턴들로, 객체 간 결합도를 줄이고 유연성을 높이는 데 중요한 역할을 한다.1. 옵저버 패턴 (Observer Pattern)→ 주체(Subject)의 상태 변화가 있을 때, 이를 감지하고 자동으로 알림을 받는 패턴✅ 개념한 객체(Subject)의 상태가 변하면 등록된 옵저버(Observer)들에게 자동으로 알림을 보냄이벤트 기반 시스템에서 많이 활용됨MVC(Model-View-Controller) 패턴에서 View가 Model의 변경 사항을 감지할 때 사용됨✅ 구현 방법 (Java 코드)import java.util.ArrayList;..
생성패턴이란?생성패턴은 객체의 생성 과정을 추상화하여 객체 생성의 유연성과 재사용성을 높이는 데 도움을 주는 디자인 패턴이다.잘 알려진 다섯가지 패턴(싱글톤 패턴, 팩터리 메서드 패턴, 추상 팩토리 패턴, 빌더 패턴, 프로토타입 패턴)에 대해 간단히 살펴보자.1. 싱글톤 패턴 (Singleton Pattern)특정 클래스의 인스턴스가 오직 하나만 생성되도록 보장하는 패턴.구현 방법:public class Singleton { private static Singleton instance; private Singleton() {} public static Singleton getInstance() { if (instance == null) { instance ..
도커는 컨테이너 기반 가상화를 제공한다. 가상화란 무엇인가?가상화는 물리적인 하드웨어를 논리적으로 분리하여 여러 운영 체제나 애플리케이션을 독립적으로 실행할 수 있도록 하는 기술이다.하이퍼바이저 기반 가상화하드웨어 위에 하이퍼바이저(예: VMware, Hyper-V)를 설치해 각 가상 머신(VM)이 독립된 운영 체제를 실행할 수 있도록 한다.장점: 각 VM이 완전한 운영 체제를 포함해 높은 격리성과 호환성을 제공한다.단점: 무겁고, 많은 리소스를 소모한다.OS 수준 가상화 (컨테이너)호스트 운영 체제 위에서 컨테이너를 실행하며, 커널을 공유하지만 애플리케이션과 라이브러리는 독립적으로 실행된다.장점: 경량화되어 빠르게 시작되고, 리소스 소모가 적다.단점: 같은 운영 체제 커널을 사용하므로 호환성은 제한적이..