caffeine-library / release-everything

'Release의 모든 것'을 읽는 스터디
3 stars 0 forks source link

[keyword] 3장 - 시스템 안정화 #8

Closed kth990303 closed 9 months ago

kth990303 commented 9 months ago

주제

3장 - 시스템 안정화를 읽고 내용을 요약하거나,
중요✨ 하다고 생각하는 키워드 및 관련 설명을 코멘트로 달아주세요

연관 챕터

6


@caffeine-library/readers-release-everything

kth990303 commented 9 months ago

호출하는 클라이언트는 RMI 소켓에 제한 시간을 설정하도록 작성될 수 있었다. 예를 들어 새로운 소켓을 생성할 때 Socket.setSoTimeout() 메소드를 호출하는 소켓 팩토리를 가져다 쓸 수 있었다. 특정 시점에 CF에서는 EJB 대신 HTTP 기반의 웹 서비스를 만들기로 결정할 수도 있었다. 그러면 클라이언트는 HTTP 요구에 시간 제한을 걸 수 있게 된다. (p.65)

2장에서 항공사 사례에 대해 얘기하면서, 경원님께서 왜 timeout을 걸지 않았지?라고 말씀해주신게 떠올라서 적어봤습니다 ㅎㅎ 3장에 timeout 설정 관련된 얘기가 나올 줄이야. 경원님의 선견지명 👍


7일 만에 발생하는 메모리 누수를 테스트하지 않았다면 7일 후에 메모리 누수가 발생할 것이다. (p.62)

개발(베타) 환경에서 QA를 할 때, 실제로 위와 같은 메모리 이슈는 테스트하기 어려울 것 같은데요. 이처럼 개발 환경에서의 QA나 성능테스트는 어느 정도 한계가 존재한다고 생각합니다.

그럼 개발 환경에서 부하테스트를 잘 진행하기 위해선 어떻게 해야될까? 에 대해 한번 생각해보게 됐습니다. 책에서는 아래와 같은 방안을 제시했네요.

때로는 비용 때문에 완벽한 환경을 구성하도록 승인받기 어렵다. 그렇다면 주요 부분만 테스트하고 나머지는 제거하도록 하자. 테스트를 전혀 하지 않는 것보다는 낫다. (p.63)

개발 환경에서는 운영환경과 비슷한 트래픽 및 부하를 주기엔 너무나 막대한 비용이 요구됩니다. 또, 개발 환경에서 운영환경과 비슷하게 요청을 만들어주기 위해선 너무나 많은 외부 API 모킹, 외부 서비스 모킹 등이 필요합니다.

💬 여러분은 개발(베타) 환경에서 부하 테스트를 어떻게 진행하나요? 경험을 공유받고 싶습니다!

🙎‍♂️ 일단 저는 베타 환경에 데이터를 N건 밀어넣었을 때, API를 쐈을 때 이에 대한 응답이 M초 걸린다 와 같이 직접 테스트를 해보는데요 (어차피 베타 환경이니까!), 운영에선 좀 더 느릴수도 있기 때문에 최대한 보수적으로 성능을 계산하여 리팩터링을 진행하는 것 같습니다.

만약 외부 서버와 연동돼야 하는 e2e 테스트 같은 느낌으로 부하테스트를 진행해야 된다면? 이런 경우는 아직 없었던 거 같습니다. 외부 서버 API 모킹이라든지, 외부 서버에 직접 저희한테 API를 쏴달라든지 하면서까지 성능 및 부하테스트를 진행하진 않았던 거 같아요.

binchoo commented 9 months ago

💬 여러분은 개발(베타) 환경에서 부하 테스트를 어떻게 진행하나요? 경험을 공유받고 싶습니다!

실질적은 경험 공유는 부족하여 안타깝습니다, 여러모로 사례를 만들어 경험을 넓히고 싶군요.

Tests that purposefully attempt to overwhelm the target and/or infrastructure with packet or connection flooding attacks, reflection and complexity attacks, or other large volumes of traffic are not considered network stress tests but are considered distributed denial of service (DDoS) tests. 의도적으로 패킷, 홍수 공격, 리플렉션 공격, 복잡성 공격, 큰 볼륨의 트래픽으로 대상과 인프라를 버겁게 하는 테스트는 DDoS 공격을 한 것으로 간주합니다.

JasonYoo1995 commented 9 months ago

서론

3.1 안정성 정의

3.2 수명 연장

3.3 장애 모드

3.4 균열 확산 차단

3.5 장애 사슬

마치며