개발자 강화/백엔드 (20) 썸네일형 리스트형 [매일메일] 스케일 아웃 & 스케일 업 (BE.250210) (개발자 강화/백엔드) 2025. 2. 10. 14:17 기존 서버가 한계에 도달하는 경우 사용할 수 있는 방법 스케일 업기존 서버를 더욱 높은 사양으로 업그레이드하는 것수직 스케일링(vertical scaling)이라고도 함예: AWS에서 EC2 t2.micro에서 t2.small로 업그레이드 간단하게 서버의 성능을 향상할 수 있음(단순히 더 높은 사양의 서버로 갈아타는 것)그러나, 서버를 무한정 업그레이드하는 것만으로는 한계가 있음서버 한 대에 부하가 몰려서 문제 대응이 어려움장애에 대한 자동 복구(failover)나 다중화 (re-dundancy) 방안을 제시하지 않음 향후 사용량을 미리 추정하여 미리 고사양 서버를 확보하는 경우에실제 필요한 서버보다 과한 사양으로 확보하면 비용적 손실이 존재할 수 있음 스케일 아웃비슷한 사양의 장비를 추가해 수평으로 확.. 🌟[공부] NestJS의 Custom Decorators란? (개발자 강화/백엔드) 2025. 2. 9. 18:52 NestJS의 Custom Decorators반복적인 로직을 재사용 가능하게 만들고, 코드의 가독성을 높이기 위해 사용함NestJS에서 제공하는 기본 데코레이터(@Body(), @Query(), @Param() 등) 외에 사용자가 직접 커스텀 데코레이터 정의 Custom Decorator의 필요성1. 반복되는 코드 제거: 컨트롤러에서 동일한 로직을 적용할 때 유용2. 코드 가독성 향상: req.user.id 같은 접근 방식을 단순화 가능3. Middleware 또는 Guard와 조합 가능: 사용자 인증, 권한 체크 등에 활용 Custom Decorator 사용법1. 메소드 매개변수용 데코레이터컨트롤러에서 매개변수 값 추출 및 변환을 쉽게 하기 위한 데코레이터 @GetUser() 데코레이터를 만들어서, J.. 🌟[공부, 개발] NestJS의 Pipes란? (개발자 강화/백엔드) 2025. 2. 8. 23:39 NestJS의 Pipes데이터 변환, 검증, 정제(sanitization) 역할을 수행하는 미들웨어와 비슷한 기능요청(Request)에서 들어오는 데이터를 변환하거나, 특정 조건을 만족하는지 검증하는 데 사용됨 Pipes의 주요 역할1. 데이터 변환(Transformation): 문자열을 숫자로 변환 ("123" -> 123)2. 데이터 검증(Validation); 값이 특정 조건을 충족하는지 확인(이메일 형식 체크)3. 데이터 정제(Sanitization): 공백 제거, 특수문자 제거 Pipes 사용법Pipe설명ValidationPipeDTO 기반 유효성 검사ParseIntPipe문자열을 정수로 변환ParseBoolPipe"true", "false"를 boolean으로 변환ParseUUIDpipeUUI.. [매일메일] 캐싱 전략 (BE.250205) (개발자 강화/백엔드) 2025. 2. 8. 21:15 캐시의 목표: 성능 향상, 부하 감소 Cach Aside(Lazy Loading)캐시 히트 시 캐시에서 데이터를 불러옴캐시 미스 시 원본 데이터베이스에서 조회해서 반환하고, 캐시에 데이터를 적재함 캐시는 데이터베이스와 직접 통신하지 않고, 어플리케이션이 캐시의 모든 것을 관리함. 장점실제 요청된 데이터만 캐시에 저장됨. 불필요한 데이터 캐싱을 줄일 수 있음캐시에 문제가 발생해도, 원본 데이터베이스에 직접 접근해서 서비스가 계속 작동될 수 있음단점요청 초기에는 모든 요청마다 캐시 미스가 발생해 데이터베이스에 부하가 발생할 수 있음캐시 미스가 발생한 경우만 데이터를 캐시에 적재하므로 원본 데이터베이스와 값이 다를 수 있다(캐시 불일치) Cach Inconsistency(캐시 불일치) 해결법원본 데이터베이스에.. [매일메일] ACID란? (BE.250207) (개발자 강화/백엔드) 2025. 2. 8. 21:14 ACIDAtomicity 원자성, Consistency 일관성, Isolation 격리성, Durability 지속성데이터베이스 트랜잭션이 안전하게 수행된다는 것을 보장하기 위한 성질을 의미함 각 속성의 의미1. Acomicity 원자성트랜잭션 내부 연산들이 부분적으로 실행되고, 중단되지 않는 것을 보장함트랜잭션은 전체 성공과 전체 실패 중 한 가지만 수행함계좌이체 트랜잭션은 A계좌 출금->B계좌 입금 연산으로 이루어져 있고, 입금이 실패하면 출금을 취소해야 함 2. Consistency 일관성트랜잭션이 성공적으로 완료되면 일관성 있는 데이터베이스 상태로 유지되는 것을 보장함데이터베이스에 정의된 규칙을 트랜잭션이 위반하는 경우(제약조건 위반) 해당 트랜잭션은 취소되어야 함 3. Isolation 격리성동.. [매일메일] 동시성 제어(BE.250114/250115/250205/250106 통합) (개발자 강화/백엔드) 2025. 2. 6. 08:56 시작하기 전에...동시성(Concurrency)이란 무엇인가? 논리적으로 동시에 실행되는 것처럼 보이게 만드는 개념 (동시 실행처럼 보이지만, 실제로는 아님!)단일 코어 위에서 시간 분할을 통해 여러 스레드를 번갈아 가며 작업 수행 사용자의 입력을 기다리거나, 네트워크 요청, 파일 입출력 등 I/O 작업이라고 함I/O 작업 시에는 CPU가 유휴 상태로 대기함. 입력/출력이 끝날 때까지 손 놓고 기다린다는 뜻! 이때 CPU의 효율성을 위해! 아무것도 안하는 대신에 컨텍스트 스위칭으로 다른 스레드 작업을 처리함이 방법을 쓰면 여러 클라이언트 요청을 동시에 처리할 수 있음 여러 스레드를 사용하면서 Deadlock, Race Condition, Starvation 등의 문제가 발생할 수 있음(해당 문제는 아래 .. [매일메일] CORS란? (BE.250116) + (FE.250205) (개발자 강화/백엔드) 2025. 2. 5. 09:40 CORS(Cross Origin Resource Sharing) 개념- 출처 교차(Cross Origin): 리소스를 주고받는 곳의 출처가 다른 경우에 발생함 (*출처: 도메인, 프로토콜, 포트 등)- 출처 교차인 경우 접근 권한을 부여하는 메커니즘이 필요함- CORS는 서로 다른 출처에서 제공되는 리소스에 접근할 수 있도록 허용하는 정책 CORS의 필요성?- 위조 요청 문제를 해결하기 위함(CSRF, Cross-Site Request Forgery, 크로스사이트 요청 위조)- 피해자가 공격자의 웹 사이트에 접속했을 때, 해당 사용자의 요청인 것처럼 타 사이트에 GET 요청을 보냄- 위와 같이 의도치 않은 요청을 서버에 보내서, 사용자의 개인정보 등을 탈취할 수 있음. SOP란?- Same-origin .. [매일메일] 로드 밸런싱이란? (BE.250203) (개발자 강화/백엔드) 2025. 2. 3. 23:57 로드 밸런싱서버에 들어오는 클라이언트 요청을 균등하게 분산시킴어플리케이션 가용성, 확장성, 보안 및 성능을 확보함 로드 밸런싱 알고리즘1. 라운드 로빈(Round Robin)모든 요청이 순서대로 처리되는 방식모든 서버 처리 능력이 동등하고, 요청의 고른 분산이 중요한 경우 고려해볼 수 있음 📌 장점: 구현이 쉽고, 고른 분산을 보장함📌 단점: 서버 부하나 응답 시간을 고려하지 않아, 서버의 처리 능력이 다르면 비효율적임 2. 가중치 라운드 로빈(Weighted Round Robin)서버 처리 능력과 가용 자원에 따라 가중치를 할당 받음요청을 순서대로 처리하되, 가중치가 높은 서버는 상대적으로 많은 요청을 가져감 📌 장점: 서버 처리 능력이 다른 경우를 고려함📌 단점: 상대적으로 구현이 복잡하고, .. [매일메일] 다중 서버에서 세션 기반 인증을 사용했을 때 문제점? (BE.250131) (개발자 강화/백엔드) 2025. 1. 31. 23:31 세션불일치다중 서버 기반에서 세션 기반 인증을 사용하면 세션 불일치 발생함예시)1. 서버 A,B를 동시 운영하면, 로드밸런서는 사용자 요청을 상황에 맞게 A,B 중 한 곳으로 전달2. 유효한 로그인 요청이 A 서버로 처음 도착하면 사용자 세션 정보는 A서버에 저장3. 사용자 또 다른 요청이 로드 밸런서 B로 도착하면, 사용자 세션 정보가 없기 떄문에 유효하지 않은 요청이 됨 세션 불일치 해결법1. Sticky Session(스티키 세션)📌개념한 사용자의 모든 요청을 동일한 서버로 보냄최초 요청이 특정 서버(A)로 전달되면 이후 모든 요청도 반드시 A로 가도록 로드 밸런서가 트래픽을 고정함 ✔구현IP 해시(사용자 IP 주소를 해싱해 특정 서버로 라우팅)세션 쿠키 기반(최초 요청 시 특정 서버 선택 후, .. [매일메일] SOLID 원칙이란? (BE.250130) (개발자 강화/백엔드) 2025. 1. 30. 23:49 SOLID 원칙=객체지향 설계 5원칙, 각 원칙의 앞 글자를 따서 만들어짐객체지향설계 핵심은 의존성을 잘 관리하는 것임 ✅Single Responsibility Principle(SRP): 단일 책임 원칙클래스가 오직 하나의 목적이나 이유로만 변경되어야 함.여러 책임이 한 클래스에 있으면 한 기능이 변경될 때 다른 기능도 영향 받음.Responsibility(책임)은 특정 사용자나 기능 요구사항에 따라 소프트웨어의 변경 요청을 처리하는 역할을 의미함 📌SRP를 위반한 코드class User { constructor(name, email) { this.name = name; this.email = email; } saveToDatabase() { // DB 저장 로직 (데이터 관리 .. 이전 1 2 다음