마틴 파울러의 엔터프라이즈 애플리케이션 아키텍처 패턴을 읽고 정리한다.
1부 이야기에서는 다양한 개념과 발전 과정을 말한다.
작성 시점은 20년 전으로 당시와 지금의 용어 & 개념이 다를 수 있고, 더 이상 사용 안 하는 것도 있을 수도 있다.
자세한 내용이 궁금하면 읽어보는 걸 권한다.
상태 비저장의 가치
엔터프라이즈 애플리케이션에서의 상태 비저장 서버는 요청 간에 상태가 유지되지 않는 객체를 의미하며, 많은 사람들은 상태 저장 서버를 재앙으로 인식한다.
가장 큰 문제는 서버 리소스에 대한 것으로 모든 상태 저장 서버 객체는 대기하면서 사용자의 상태를 유지하는데, 상태 비저장 객체는 세션의 다른 요청을 처리할 수 있다. 즉, 접속된 사용자마다 상태를 저장하려면 같은 객체가 지속적으로 필요하며 다른 일을 할 수 없게 된다. 상태 비저장은 객체를 풀링해 많은 처리를 할 수 있다.
클라이언트 상호작용에는 상태 저장인 것이 많다. 간단한 예로 쇼핑몰의 장바구니를 생각해보자, 장바구니는 사용자의 전체 세션동안 유지되어야 한다. 상태 저장 비즈니스 트랜잭션을 수행해야 하니 세션도 상태 저장이다. 사용자가 구매를 안 하면 필요 없겠지만 구매를 하려면 저장해야 한다.
세션 상태
장바구니의 세부 사항은 세션 상태로 장바구니 안의 데이터는 특정 세션으로 세션 상태는 한 비즈니스 트랜잭션에 포함되므로 ACID 속성을 가진다.
세션이 저장하는 모든 데이터가 세션 상태인 것은 아니다. 꼭 저장할 필요가 없는 데이터도 캐싱으로 성능 향상을 할 수 있다.
세션 상태는 올바른 동작을 위해 저장해야 하지만 캐시는 없어도 동작에 방해되지 않는다.
세션 상태를 저장하는 방법
세션 상태 저장 방법은 세가지가 있다.
- 클라이언트 세션 상태 : 클라이언트에 저장하는 데이터로 쿠키, URL 인코딩 데이터, HTML의 hidden 태그 등을 이용한다. 문제점은 암호화하지 않으면 악성 사용자가 악용해 범죄를 저지를 수 있다.
- 서버 세션 상태 : 요청 간 데이터를 메모리에 저장하는 방법이다.
- 데이터베이스 세션 상태 : 데이터를 테이블과 필드로 분리하고 데이터베이스에 저장하는 방법이다.
저장하는 방법을 선택하는 기준으로는 저장할 데이터의 양, 사용자 수에 따른 처리량, 성능, 시스템의 문제 등이 존재한다.
위의 세 방식은 상호배타적인 방식은 아니며, 서로 혼합해 사용할 수 있다.
'서적 > 엔터프라이즈 애플리케이션 아키텍처 패턴' 카테고리의 다른 글
1부 이야기 - 종합 (0) | 2021.08.02 |
---|---|
1부 이야기 - 분산 전략 (0) | 2021.08.02 |
1부 이야기 - 동시성 (0) | 2021.07.28 |
1부 이야기 - 웹 프레젠테이션 (0) | 2021.07.26 |
1부 이야기 - 관계형 데이터베이스 매핑 (0) | 2021.07.26 |