본문 바로가기

분류 전체보기

(170)
[공부] BFF API란? 2025. 2. 10. 14:46 BFF APIBFF: Backend-For-Frontend프론트엔드의 요구에 최적화된 백엔드의 레이어 멀티플랫폼을 지원하는 서비스에서 한 백엔드를 사용한다면, 한 백엔드가 여러 프론트엔드의 API 호출을 대응함백엔드 api는 여러 플랫폼의 요구사항을 모두 충족시키기 위해 모든 데이터를 반환하도록 구현하게 됨각 플랫폼의 프론트엔드는 요청한 것 외에 다른 데이터까지 함께 받게 되는 셈이라 데이터 처리 로직이 복잡해짐 MSA(MicroService Architecture) - 하나의 어플리케이션을 독립적인 여러 개의 마이크로 서비스로 구성여러 마이크로 서비스를 호출해서 데이터를 조합해야 하는 경우 클라이언트가 이를 직접 수행하면 api 호출 횟수 증가함BFF를 사용하면 여러 마이크로서비스에서 필요한 데이터를 ..
[매일메일] 스케일 아웃 & 스케일 업 (BE.250210) 2025. 2. 10. 14:17 기존 서버가 한계에 도달하는 경우 사용할 수 있는 방법 스케일 업기존 서버를 더욱 높은 사양으로 업그레이드하는 것수직 스케일링(vertical scaling)이라고도 함예: AWS에서 EC2 t2.micro에서 t2.small로 업그레이드 간단하게 서버의 성능을 향상할 수 있음(단순히 더 높은 사양의 서버로 갈아타는 것)그러나, 서버를 무한정 업그레이드하는 것만으로는 한계가 있음서버 한 대에 부하가 몰려서 문제 대응이 어려움장애에 대한 자동 복구(failover)나 다중화 (re-dundancy) 방안을 제시하지 않음 향후 사용량을 미리 추정하여 미리 고사양 서버를 확보하는 경우에실제 필요한 서버보다 과한 사양으로 확보하면 비용적 손실이 존재할 수 있음 스케일 아웃비슷한 사양의 장비를 추가해 수평으로 확..
🌟[공부, 매일메일] Suspense란? 2025. 2. 10. 13:50 SuspenseReact의 Suspense는 비동기적인 데이터 로딩을 보다 자연스럽게 처리할 수 있도록 도와줌특정 컴포넌트가 데이터를 가져오는 동안 로딩 상태(Loading State)를 보여줌 핵심 개념1. 비동기 렌더링 지원- React가 데이터를 기다리지 않고 UI를 먼저 그린 뒤, 데이터가 준비되면 다시 렌더링함 2.  자동적인 Fallback UI- 데이터가 로딩 중일 때, 특정 UI(로딩 화면 등)를 부여줄 수 있음. 3. Concurrent Mode와 호환- React의 Concurrent Rendering에서 자연스럽게 동작해, 사용자 경험 향상시킴 사용법import React, { Suspense, lazy } from 'react';// lazy를 사용하여 컴포넌트를 동적으로 로드con..
🌟[공부] 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 격리성동..
[매일메일] React의 Concurrent Mode(동시성 모드) (FE.250207) 2025. 2. 8. 21:08 동시성 모드여러 작업을 비동기적으로 동시에 처리면서, 중간에 중요한 작업이 들어오면 우선순위를 바꿔서 작업을 먼저 처리 이전의 리액트는 스택구조여서, 한 번 렌더링을 시작하면 끝까지 멈추지 않고 다 처리함그러나 리액트 동시성 모드는 중간에 멈추거나 작업을 뒤로 미뤄두며 중요한 작업을 먼저 끝낼 수 있음 동시성을 활용한 기능useTransitionisPending: 대기 중인 Transition이 있는지startTransition: 상태 업데이트를 Transition으로 표시할 수 있게 함import { useState, startTransition } from "react";function SearchComponent() { const [query, setQuery] = useState(""); co..

728x90