Redux는 앱의 모든 상태(State)를 하나의 중앙 저장소에서 관리하게 해주는 상태 관리 라이브러리입니다. 컴포넌트가 많아지면 "어떤 데이터가 어디서 변경되었는지" 추적하기 어려워지는데, Redux는 이를 예측 가능한 방식으로 해결해 줍니다. 특히 최근에는 코드가 복잡한 기존 방식 대신 Redux Toolkit(RTK)을 사용하는 것이 표준입니다. 1. Redux의 3대 핵심 개념Redux를 이해하려면 다음 세 가지 키워드를 반드시 알아야 합니다. ① Store (저장소)앱의 모든 상태가 저장되는 단 하나의 공간입니다.모든 컴포넌트는 이 Store에서 데이터를 가져다 쓸 수 있습니다."앱의 거대한 데이터베이스"라고 생각하면 쉽습니다.② Action (명령서)상태에 변화를 주고 싶을 때 발행하는 주문서..
development
Oauth 2.0NCP에서는 Oauth 2.0에 대해 다음과 같이 설명하고 있습니다.Open Authorization 2.0 혹은 OAuth2.0은 웹 및 애플리케이션 인증 및 권한 부여를 위한 개방형 표준 프로토콜입니다. 이 프로토콜에서는 third-party 애플리케이션이 사용자의 리소스에 접근하기 위한 절차를 정의하고 서비스 제공자의 API를 사용할 수 있는 권한을 부여합니다. 쉽게 이야기하면, 클라이언트가 서버의 특정 리소스에 대한 접근 권한을 얻기 위해 사용하는 방식입니다. 즉 API를 호출할 때 서버로부터 발급받은 Access Token을 헤더에 넣어 보내면 서버에서 권한을 확인하고 리소스를 제공해주는 것입니다. 그래서 인증이 아니라 인가 프레임워크이고, 권한을 확인하는 것이지 '이 사람이 누..
헬스 체크를 지원하는 도커 이미지 빌드하기도커 이미지로 애플리케이션을 채키징하고, 컨테이너에서 실행하고, 도커 컴포즈로 여러 컨테이너에 걸쳐 어플리에키션을 실행하는 과정까지 살펴보았다. 운영 환경에서는 도커 스웜이나 쿠버네티스 같은 컨테이너 플랫폼상에서 애플리케이션을 실행하게 될 것이다. 이들 플랫폼은 애플리케이션이 스스로 이상에서 회복할 수 있도록 해 주는 기능을 제공한다. 이때 이들 플랫폼이 컨테이너에서 실행 중인 애플리케이션 상태가 정상인지 확인할 수 있는 정보를 이미지에 함께 패키징할 수도 있다. 프로세스가 비정상 종료되었거나 컨테이너가 종료됐다면 개발자도 애플리케이션의 상태가 비정상임을 알 수 있다. 클러스터 환경에서는 플랫폼이 종료된 컨테이너를 재시작하거나 새 컨테이너로 교체하는 작업을 대신..
Dockerfile이란?Dockerfile은 애플리케이션을 패키징하기 위한 스크립트이다. 그러나 분산 애플리케이션을 기준으로 보면 Dockerfile 스크립트는 애플리케이션의 한 부분을 패키징하는 수단에 지나지 않는다. 여러 서버가 필요한 경우, 각각의 Dockerfile을 만들 것이다. 그렇다면 이들 컨테이너는 누가 실행해야 할까? 직접 순서대로 각각의 컨테이너를 도커 명령행을 통해 일일이 옵션을 지정해가며 실행할 수도 있겠지만, 이런 방법 대신 도커 컴포즈 파일에 애플리케이션 구조를 정의하면 된다. Docker Compose란?도커 컴포즈 파일은 애플리케이션의 '원하는 상태', 즉 컴포넌트가 실행 중일 때 어떤 상태여야 하는지를 기술하는 파일이다. 또한, docker container run 명령으..
데이터 엑세스 지연 시간 줄이기온라인 트랜잭션 처리는 대부분을 데이터 액세스가 차지합니다. 정적 콘텐츠의 경우 CDN을 활용할 수 있고, 동적 콘텐츠/DB데이터의 경우 인메모리 캐시를 활용하여 지연 시간을 줄일 수 있습니다. 1) 캐시의 층위: L1 vs L2 (관용적 용어)L1 (Local / In-process / Near cache)각 앱 프로세스 메모리(Map/LRU/Caffeine 등)가장 빠름(네트워크 왕복 없음)인스턴스마다 값이 달라 일관성/무효화 관리 필요L2 (Distributed / Shared)Redis/ElastiCache 같은 분산 인메모리 캐시L1보다 느리지만 여러 서버가 공유하고 용량 확장 쉬움2) 캐시 패턴: 언제/어떻게 채우고 지울까Cache-Aside (권장)읽기: 캐시에..
CDN(Content Delivery Network)이란?1. CDN이란?CDN(Content Delivery Network, 콘텐츠 전송 네트워크)은 웹사이트나 앱의 콘텐츠(이미지, CSS, JS, 동영상 등)를 전 세계 여러 지역에 분산된 서버(엣지 서버)에 저장해두고, 사용자가 요청할 때 가장 가까운 서버에서 전달하는 기술입니다.한마디로, 사용자와 가까운 서버에서 콘텐츠를 제공해 속도를 높이고 서버 부하를 줄이는 시스템이라고 할 수 있습니다.2. CDN의 필요성속도 향상: 서버와 사용자의 거리가 줄어들어 지연(Latency)이 감소합니다.트래픽 분산: 원본 서버에 모든 요청이 몰리지 않고 여러 서버에서 분산 처리됩니다.안정성: 특정 서버에 문제가 생겨도 다른 서버에서 콘텐츠를 제공할 수 있습니다.보..
AWS 서버 환경 기초 정리VPC (Virtual Private Cloud)VPC는 논리적으로 격리된 사용자 전용 네트워크 구역이다.하나의 VPC는 여러 가용 영역(AZ) 에 걸쳐 생성할 수 있지만, 여러 리전에 걸쳐 만들 수는 없다.서브넷서브넷은 VPC를 다시 쪼갠 서브 네트워크로, AWS 네트워크에서의 최소 단위이다.온프레미스 환경과 마찬가지로, 역할에 따라 서브넷을 분리해 관리한다.예: 인터넷에서 HTTP 요청을 받는 웹 서버는 퍼블릭 서브넷에,웹 서버에서만 접근 가능한 데이터베이스 서버는 프라이빗 서브넷에 두어 필터링 정책을 구분한다.AMI (Amazon Machine Image)AMI는 즉시 사용 가능한 OS와 패키지 조합이다.EC2 인스턴스를 생성할 때 AMI를 선택하는데, AMI 유형에 따라..
1. 도커(Docker)란?도커 = 컨테이너 기술을 쉽게 다루는 도구보통 서버에 프로그램을 설치하려면 운영체제마다 환경이 다르고, 버전이 달라서 실행이 잘 안 되는 경우가 많다. 예를 들어 Mac에서 실행한 프로그램을 그대로 Linux 에 옮겨도, 환경 차이와 상관없이 프로그램이 잘 실행될 수 있도록 해주는 기술이다.도커는 프로그램 실행에 필요한 모든 것(코드, 라이브러리, 환경)을 묶음(package) 으로 만들어서 어디서든 똑같이 실행되도록 도와준다. 2. 컨테이너(Container)란?컨테이너 = 실행 중인 도커 앱도커가 "앱 실행 파일 + 환경"을 하나의 이미지(Image) 로 만든 뒤, 그것을 실행하면 → "컨테이너"가 되는 것.즉, 이미지 = 설계도, 컨테이너 = 실제 실행된 앱 인스턴스.비..