Jump to section

스테이트풀과 스테이트리스 비교

URL 복사

애플리케이션을 비롯한 모든 항목의 상태란 해당 시점의 상황과 품질, 즉 존재 상태를 말합니다. 스테이트풀과 스테이트리스는 상호 작용 상태가 얼마나 오래 기록되는지, 해당 정보가 어떤 식으로 저장되는지를 기준으로 구별할 수 있습니다. 

스테이트리스 프로세스 또는 애플리케이션은 격리된 것으로 간주됩니다. 과거 트랜잭션에 대한 정보 또는 참조가 저장되지 않기 때문입니다. 각 트랜잭션은 모두 처음부터 시작됩니다. 스테이트리스 애플리케이션은 하나의 서비스 또는 기능을 제공하며, 콘텐츠 전달 네트워크(CDN), 웹, 프린트 서버를 사용해 이러한 단기 요청을 처리합니다. 

이러한 스테이트리스 트랜잭션의 가장 일반적인 예시는 검색창에 질문을 입력하고 엔터키를 누르는 형식으로 진행되는 온라인 검색입니다. 트랜잭션이 우발적으로 중단되거나 종료되면 새롭게 시작하면 됩니다. 스테이트리스 트랜잭션은 단일 요청에 대해 하나의 응답이 나오므로, 자동판매기와 비슷합니다. 

이에 반해, 스테이트풀 애플리케이션과 프로세스는 온라인 뱅킹이나 이메일처럼 여러 번 반환될 수 있습니다. 스테이트풀은 이전 트랜잭션의 컨텍스트에 따라 수행되며, 현재 트랜잭션이 이전 트랜잭션에서 발생한 상황에 영향을 받습니다. 이러한 이유로 스테이트풀 애플리케이션은 사용자에게 받은 요청을 처리할 때마다 같은 서버를 사용합니다.  

스테이트풀 트랜잭션은 컨텍스트와 내역이 저장되므로 중단되어도 중단된 곳부터 다시 시작할 수 있습니다. 스테이트풀 애플리케이션은 창의 위치, 기본 설정 구성, 최근 활동과 같은 항목을 추적합니다. 스테이트풀 트랜잭션은 같은 사람과 주기적으로 지속하는 대화와 비슷합니다.

오늘날 우리가 사용하고 있는 대부분의 애플리케이션은 스테이트풀이지만, 기술이 발전함에 따라 마이크로서비스와 컨테이너를 통해 클라우드에서 더욱 쉽게 애플리케이션을 구축하고 배포할 수 있게 되었습니다. 

클라우드 컴퓨팅마이크로서비스의 인기가 높아지면서, 스테이트풀이든 스테이트리스든 상관없이 애플리케이션의 컨테이너화도 그 인기가 높아지고 있습니다. 컨테이너는 라이브러리 및 종속성과 함께 패키징되는 애플리케이션의 코드 유닛이므로 손쉽게 이동할 수 있으며 데스크톱, 기존 IT 인프라, 클라우드를 비롯한 어떤 환경에서든 실행 가능합니다. 

원래 컨테이너는 이식성이 높고 유연하다는 특성으로 인해 스테이트리스로 구축되었으나, 컨테이너의 사용이 확산됨에 따라 사용자들이 기존 스테이트풀 애플리케이션을 컨테이너화(컨테이너에서 실행하기 위해 재설계 및 재패키징)하기 시작했습니다. 이러한 방식으로 스테이트풀 상태의 저장 방식과 컨텍스트를 유지하면서도, 컨테이너의 유연성과 빠른 속도를 활용할 수 있었기 때문입니다.

이로 인해 스테이트풀 및 스테이트리스 애플리케이션의 경계가 크게 허물어졌습니다. 예를 들어, 장기간 저장이 필요하지 않은 스테이트리스 애플리케이션이지만, 서버가 쿠키를 사용해 동일한 클라이언트에서 받은 요청을 추적하도록 할 수 있습니다. 

컨테이너의 인기가 높아짐에 따라, 기업에서는 데이터 스토리지, 쿠버네티스, StatefulSets를 사용해 스테이트리스 및 스테이트풀 컨테이너 모두를 관리하는 방법을 제공하기 시작했습니다. 스테이트풀이 이제 컨테이너 스토리지주요 부분이 되면서 스테이트풀 컨테이너를 사용할 것인가가 아닌 언제 사용할 것인가가 관건입니다. 

스테이트풀 또는 스테이트리스 컨테이너 중 무엇을 사용해야 하는지는 빌드 중인 애플리케이션의 종류와 필요에 따라 달라집니다. 정보를 일시적으로 신속하게 사용해야 하는 경우에는 스테이트리스를 선택하고, 한 세션에서 다음 세션으로 넘어갈 때 애플리케이션에서 더 많은 메모리를 필요로 하는 경우에는 스테이트풀을 선택합니다.

스테이트풀과 스테이트리스는 Red Hat이 전문입니다. 엔터프라이즈 레디 쿠버네티스 플랫폼인 Red Hat OpenShift에 스테이트풀 컨테이너 오케스트레이션, Red Hat Integration으로 애플리케이션 개발을 위한 통합 환경 조성 등을 포함하여 Red Hat이 제공하는 권위 있는 어워드를 수상한 지원과 업계 최대 규모의 파트너 에코시스템을 활용할 수 있습니다. 

Red Hat의 제품이 솔루션을 구축하고, 개발자의 생산성을 향상하고, 혁신을 촉진하는 방식을 확인해보세요. 이 모든 것이 오픈소스 방식으로 이루어집니다.

추가 자료

문서

스테이트풀과 스테이트리스 비교

스테이트풀과 스테이트리스는 상호 작용 상태가 얼마나 오래 기록되는지, 해당 정보가 어떤 식으로 저장되는지를 기준으로 구별할 수 있습니다.

문서

Quarkus란?

Quarkus는 Java 가상 머신(Java Virtual Machine, JVM)과 네이티브 컴파일을 위해 만들어진 쿠버네티스 네이티브 Java 스택으로, 특히 컨테이너에 Java를 최적화합니다.

문서

서버리스란?

서버리스(serverless)란 개발자가 서버를 관리할 필요 없이 애플리케이션을 빌드하고 실행할 수 있도록 하는 클라우드 네이티브 개발 모델입니다.

클라우드 네이티브 애플리케이션에 대한 자세한 내용

제품

선택한 인프라에서 애플리케이션 출시 테스트를 완료한 통합 서비스 세트를 포함하는 엔터프라이즈 애플리케이션 플랫폼입니다.

여러 서비스를 서로 분리하여 독립적으로 생성, 확장, 배포할 수 있게 하는 분산형 클라우드 네이티브 통합 플랫폼입니다.

리소스

e-book

클라우드 네이티브와 하이브리드 클라우드의 융합: 전략 가이드

E-book

클라우드 네이티브 애플리케이션 구현을 위한 과정

교육

무료 교육 과정

Developing Cloud-Native Applications with Microservices Architectures