2016년 11월 21일 월요일

자신의 앱이 셀프 DDoS를 가하는 상황을 피하기 위한 방법들..

참고 : http://www.infoworld.com/article/3138018/security/developers-dont-ddos-your-own-apps.html ,
https://cloudplatform.googleblog.com/2016/11/how-to-avoid-a-self-inflicted-DDoS-Attack-CRE-life-lessons.html

앱의 기본 데이터 리프레시 주기와 서버의 장애시 재시도 주기가 고정된 값을 갖는 경우 둘이 겹치는 상황에서 트래픽이 배가 되어 앱 스스로 자신의 서비스에 DDoS 공격과 유사한 상황을 야기하고 이러한 좋지않은 주기가 반복되는 문제에 대한 이야기인데..

구글 엔지니어가 이야기하는 3가지 해법은 다음과 같다.

지수의 형태로 증가하는 지연시간(exponential backoff)

고정된 짧은 재시도 주기를 사용할 경우 로드벨런서에 요청이 쌓이고 서버가 정상으로 돌아왔을 때 과부하 상황을 야기하기 좋기 때문에 고정된 재시도 주기가 아닌 1, 2, 4, 8, 16과 같은 형태로 재시도 주기를 증가 시키고 정상적인 상황의 동기화 주기가 15분이라면 재시도 주기는 최대 16 정도로 잡을 수 있다. 하지만 이역시 다수의 장비들의 재시도 주기가 동기화 되는 현상을 해결하기엔 부족하다..

무작위 주기를 더하거나 빼기(a little jitter)

장시간 서버의 다운타임을 겪게 되면 지수의 형태로 증가하는 지연시간을 이용하더라도 재시도 주기가 맞물리는 현상은 발생하며 이를 피하기 위해 지연시간에 +/- 고정 비율의 주기에서 랜덤하게 시간을 선택할 수 있다. 예를 들면 다음 재시도 주기가 4분에 30% 비율을 이용하기로 했다면 최소 2.8분 최대 5.2분 사이의 값을 랜덤하게 적용하도록 하는 것이다.

이 방법은 실생활에서 폰과 컴퓨터 사용자들의 수면과 기상 패턴과 같은 점을 고려 했을 때 일반적인 동기화 주기에 적용해도 효과가 있다고 한다.

재시도 횟수 기록하기(retry marking)

대규모 분산 시스템의 경우 장애에서 전체 처리량이 완전히 복구 되기 까지 어느정도 시간이 걸리기 때문에 앞의 두가지 방법 만으로는 충분하지 않다.

이를 해소하기 위한 손쉽고 효과적인 방법으로 클라이언트에서 정상적인 연결과 재시도 횟수의 비율을 기록해 백엔드에서 접속의 우선순위를 두는 것이며 이에대한 판단은 사업의 성격에 따라 다를 수 있다.

2016년 11월 20일 일요일

11월 3주차 소식들..

소프트웨어

 AMD의 HSA 소프트웨어 스택을 담당하는 Boltzmann Initiative의 ROCm 1.3 소식.. 데이터 크기를 줄일 수 있도록 Tonga 하드웨어 이상 부터 16비트 형식의 데이터를 지원하도록 바뀌었고 플렛폼의 언어 지원의 초점이 OpenCL에서 HCC와 C++로 이동하는 방향으로 수정되었으며 OpenCL의 경우 1.2를 베이스로 2.0의 기능들이 백포트 되가는 형태가 될 것이라고.. HIPity 코드 변환 툴의 기능향상이 눈에 띄는데 CUDA로 작성된 CAFFE 딥러닝 프레임웍을 변환하는데 99.6%의 코드가 자동 변환 되었고 5만 5천 라인의 코드의 포팅 작업을 완료 하는데 4일이 소요 되었다는 이야기가.. 이번 버전부터 폴라리스 하드웨어를 정식 지원하고 앞으로 ARM과 POWER8 플렛폼도 지원 예정이라는 소식.. 링크

기타

구글 클라우드에 2017년 초부터 GPU 서비스가 추가된다는 소식.. AMD와 NVIDIA 모두 지원하며 분당 과금 형태가 될거라고.. 링크

iPhone 6 Plus의 터치와 관련된 하드웨어 결함을 인정하고 수리 프로그램을 진행한다는 소식.. 149$의 수리비를 필요로 하고 혹시 더 많은 비용을 들여 수리한 이력이 있다면 추가 금액을 상환 해준다는 소식이.. 링크

보안

Facebook과 Google의 OAuth 2.0을 사용하는 써드파티 앱들의 보안 결함에 대한 소식.. 상당수의 앱들이 계정 정보를 탈취 당할 수 있는 위험에 놓여 있다고 하며 SSO 구현시 보안과 관련한 가이드라인이 명시되지 않은 점이 문제라고.. 기본적인 공격 방식은 피해자의 장비에 SSL 프록시를 설치하여 Man in the middle 상태를 유도하는 형태인데 써드파티의 백엔드 서버에서 클라이언트 앱에서 보내온 인증에 대해 재 검증 절차를 거치지 않는 헛점을 이용한다고.. 링크

BlackNurs 라고 불리는 새로운 형태의 DoS 공격에 대한 소식.. 일반적인 ping floods 공격의 경우 ICMP Type 8 Code 0 패킷을 이용하지만 새로운 방식의 경우 Type 3(Destination Unreachable) Code 3(Port Unreachable)를 사용하는데 적은 대역을 점유하면서 일부 방화벽 장비의 CPU에 과부하를 주는 형태로 네트웍을 마비 시킨다고.. 링크