loop-study
개발 공부할래?
loop-study
전체 방문자
오늘
어제
  • 분류 전체보기 (186)
    • 목표 및 회고 (25)
    • 세미나 & 워크샵 (1)
    • 교육 및 인강 (67)
      • TDD, Clean Code with Java (5)
      • ATDD, 클린 코드 with Spring (6)
      • DDD 세레나데 (3)
      • 인프라 공방 (6)
      • 이규원의 현실 세상의 TDD (19)
      • 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 (18)
      • 스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 (0)
      • 모든 개발자를 위한 HTTP 웹 기본 지식 - 김영한 (8)
      • 코딩으로 학습하는 GoF의 디자인 패턴 (1)
      • 스프링 시큐리티 완전정복 6.x (1)
    • 서적 (62)
      • 객체지향의 사실과 오해 (1)
      • 객체지향과 디자인패턴 (7)
      • 만들면서 배우는 클린 아키텍처 (3)
      • 테스트 주도 개발로 배우는 객체 지향 설계와 실천 (1)
      • 오브젝트: 코드로 이해하는 객체지향 설계 (17)
      • 리팩토링 : 코드 구조를 체계적으로 개선하여 효율적인 리팩터링 구현하기 (0)
      • 토비의 스프링 (3)
      • 엔터프라이즈 애플리케이션 아키텍처 패턴 (9)
      • 개발자의 글쓰기 (1)
      • 소프트웨어 장인 (17)
      • Real MySQL 8.0 (2)
      • JVM 밑바닥까지 파헤치기 (0)
    • 개발 & 방법론 (29)
      • Java (13)
      • TDD (5)
      • ATDD (3)
      • DDD (6)
      • 인프라 (2)
      • SQL (0)
    • 개인이야기 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • 백엔드 로드맵

인기 글

태그

  • 조영호
  • study
  • 장인정신
  • nextstep
  • 스프링
  • Test Driven Development
  • 소프트웨어 장인
  • 추상화
  • 김영한
  • ATDD
  • 마틴 파울러
  • 오브젝트
  • TDD
  • 이규원
  • fastcampus
  • 엔터프라이즈 애플리케이션 아키텍처 패턴
  • 백기선
  • 인프라공방
  • 넥스트스탭
  • 자바
  • java
  • 스터디
  • 모든 개발자를 위한 HTTP 웹 기본 지식
  • 인프런
  • Patterns of Enterprise Application Architecture
  • 테스트 주도 개발
  • 객체지향
  • DDD 세레나데
  • 현실세상의 TDD
  • JUnit

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
loop-study

개발 공부할래?

1부 이야기 - 세션 상태
서적/엔터프라이즈 애플리케이션 아키텍처 패턴

1부 이야기 - 세션 상태

2021. 7. 28. 15:48

마틴 파울러의 엔터프라이즈 애플리케이션 아키텍처 패턴을 읽고 정리한다.

1부 이야기에서는 다양한 개념과 발전 과정을 말한다.

작성 시점은 20년 전으로 당시와 지금의 용어 & 개념이 다를 수 있고, 더 이상 사용 안 하는 것도 있을 수도 있다.

자세한 내용이 궁금하면 읽어보는 걸 권한다.

 

엔터프라이즈 애플리케이션 아키텍처 패턴(재출간판) - 교보문고

엔터프라이즈 애플리케이션 구축을 위한 객체지향 설계의 원리와 기법 | 이 책은 『엔터프라이즈 애플리케이션 아키텍처 패턴』의 재출간판이다. 『리팩토링』의 저자로도 잘 알려진 마틴 파

www.kyobobook.co.kr


상태 비저장의 가치

엔터프라이즈 애플리케이션에서의 상태 비저장 서버는 요청 간에 상태가 유지되지 않는 객체를 의미하며, 많은 사람들은 상태 저장 서버를 재앙으로 인식한다. 

가장 큰 문제는 서버 리소스에 대한 것으로 모든 상태 저장 서버 객체는 대기하면서 사용자의 상태를 유지하는데, 상태 비저장 객체는 세션의 다른 요청을 처리할 수 있다. 즉, 접속된 사용자마다 상태를 저장하려면 같은 객체가 지속적으로 필요하며 다른 일을 할 수 없게 된다. 상태 비저장은 객체를 풀링해 많은 처리를 할 수 있다.

 

클라이언트 상호작용에는 상태 저장인 것이 많다. 간단한 예로 쇼핑몰의 장바구니를 생각해보자, 장바구니는 사용자의 전체 세션동안 유지되어야 한다. 상태 저장 비즈니스 트랜잭션을 수행해야 하니 세션도 상태 저장이다. 사용자가 구매를 안 하면 필요 없겠지만 구매를 하려면 저장해야 한다. 


세션 상태

장바구니의 세부 사항은 세션 상태로 장바구니 안의 데이터는 특정 세션으로 세션 상태는 한 비즈니스 트랜잭션에 포함되므로 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
    '서적/엔터프라이즈 애플리케이션 아키텍처 패턴' 카테고리의 다른 글
    • 1부 이야기 - 종합
    • 1부 이야기 - 분산 전략
    • 1부 이야기 - 동시성
    • 1부 이야기 - 웹 프레젠테이션
    loop-study
    loop-study
    오늘도 공부하자

    티스토리툴바