상태가 많은 웹 서비스를 사용하는 것이 잘못된 프로그래밍이 잘못되고 왜 허용됩니까?
-
13-09-2019 - |
문제
우리 조직에 상태가 많은 웹 서비스가 필요합니다. 그러나 온라인에서 읽은 모든 곳에서는 상태가 많은 웹 서비스를 구축하는 것은 프로그래밍이 좋지 않지만 그 이유는 아무것도 말하지 않습니다. 나는 그것에 대해 무엇이 그렇게 나쁜지 이해하지 못한다고 생각합니다. 또한 왜 그들이 당신이 웹 서비스에 상태를 가질 수 있도록 주변을 주는지 이해하지 못합니다.
그래서 제 질문은 왜 상태가 많은 웹 서비스를 사용하는 것이 잘못된 프로그래밍입니까? 왜 허용됩니까?
해결책
웹 서비스의 전체 목적은 확장 가능한 방식으로 한 트랜잭션에서 기능을 전달하는 것입니다. 이것은 물건을 단순하고 원자력을 유지하는 것을 의미합니다.
작업을 수행하기 위해 여러 번 전화를해야 할 때는 거래를 중단 할 수있는 잠재력이 큰 가능합니다. 클라이언트가 돌아오고 있습니까? 완료 되었습니까? 거래는 얼마나 오래 열려야합니까? 그들이 충돌 했습니까? 롤백을 어떻게 처리해야합니까?
이러한 질문에 대한 답변은 서비스를 실행하는 데 필요한 자원에 급격한 영향을 줄 수 있습니다. 그렇기 때문에 모든 사람이 한 번에 모든 작업을 수행하는 것이 좋습니다.
다른 팁
내가 생각할 수있는 몇 가지 이유는 다음과 같습니다.
상태를 유지하는 비용은 서버 측만 통행해야합니다. 서비스 소비자는 거의 웹 브라우저가 아니므로 쿠키가 없습니다. 이로 인해 서버 성능을 낮추고 설계 복잡성을 향상시킵니다.
서비스 소비자는 멍청한 브라우저가 아닌 지능형 프로그램입니다. 따라서 프로그램은 (거의 항상) 자체 상태를 유지합니다. 다시 말해, 서비스를 제공 할 때 소비자는 원하는 데이터를 정확하게 요청합니다. 서버에서 상태를 유지하는 것은 쓸모없고 불필요 해집니다.
거래 - 서비스는 클라이언트가 대부분 지능적이기 때문에 시스템의 매달려있는 지점이며, 상태의 변경 사항을 언제 알 수 있기 때문입니다. 즉, 상태를 유지하는 경우 서비스 호출 사이에 대기하여 거래 작업을 완료해야 할 수도 있습니다. 그리고 고객이 다음 서비스 호출을 할 것이라는 보장은 전혀 없습니다.
많은 이유가 있지만, 이것들은 내 머리 꼭대기에서 생각할 수있는 것들입니다. :)
나는 그것이 일종의 신화라고 생각합니다
Google이 상태의 웹 애플리케이션을 확장 할 수있게 할 수 있다면 왜 우리가 상태의 웹 서비스를 확장 할 수 없는가. 확장 성을 줄이는 것은 앱 서버에 관한 것입니다.
웹 사이트 나 웹 사이트 서비스를 사용하더라도 궁극적 인 목표는 더 나은 서비스를 제공하는 것입니다. "Stateful"이 서비스를 개선하는 경우 주저하지 마십시오.