>  기사  >  핀둬둬 기술사고 리뷰, 프로그래머는 무엇을 배워야 할까?

핀둬둬 기술사고 리뷰, 프로그래머는 무엇을 배워야 할까?

青灯夜游
青灯夜游앞으로
2019-01-22 13:28:034868검색

모든 사고가 발생하면 기술팀이 성장하게 됩니다. 버그가 발생하지 않고 실수가 발생하지 않을 것이라고는 누구도 보장할 수 없습니다. 사고 발생 후 문제의 원인을 찾아 메우면 됩니다. 손실을 멈출 시간입니다.

핀둬둬 기술사고 리뷰, 프로그래머는 무엇을 배워야 할까?

2019년 1월 20일 이른 아침, 일부 네티즌들은 핀둬둬에 심각한 버그가 있어 사용자들이 100위안 무제한 쿠폰을 마음대로 받고 쓸 수 있다고 주장했습니다. 모두가 서둘러 소식을 전했고 한밤중에 일어나 쿠폰을 받기도 했습니다. 스마트한 이용자들은 차이나모바일을 충전하는 등 최대한 빠르게 쿠폰을 썼다.

추천글 : 프로그래머가 핀둬둬에서 심각한 버그를 발생시켜 수천만 달러의 벌금을 물었습니다

핀둬둬는 이른 아침 "블랙 앤 그레이 제품 패거리가 만료된 쿠폰 허점을 통해 수천만 개의 플랫폼 할인을 훔쳤습니다. 이에 대해 플랫폼에서는 최대한 빨리 허점을 보완하고 관련 명령의 출처를 추적하는 동시에 공안 기관에 사건을 신고했으며 관련 부서와 적극적으로 협력할 예정입니다. 관련된 흑색과 회색 갱단을 조사하세요.”

나중에 Pinduoduo 대변인은 실제 최종 자산 손실이 천만 위안 미만일 수 있다고 말했습니다.

이 사건이 발생한 후 기술계에서는 "버그로 인해 회사에 200억 손실이 발생할 수 있다"는 소문이 돌았기 때문일 것입니다.

프로그래머로서 제가 더 걱정하는 것은 이 버그가 어디서 왔는가입니다. 시장의 소문에 따르면 대략 다음과 같은 단서를 얻을 수 있습니다. 이러한 단서의 진위 여부는 아직 확인되지 않았습니다. 이는 이 사건의 실제 상황이 아닐 수도 있지만, 이것이 이 단서를 사용하여 이 사건이 우리에게 가져온 깨달음을 탐색하는 데 방해가 되지는 않습니다.

● 많은 사람들이 수십만 달러를 벌었습니다.

● 이 쿠폰은 테스트 쿠폰입니다.

● 시스템이 이른 아침에 자동으로 테스트 쿠폰을 실행했습니다.

● 운영 및 유지 관리에서 시스템이 폭발한 것으로 나타났습니다.

● 관련자가 테스트 쿠폰을 수동으로 오프라인했습니다.

● 수동으로 오프라인이었던 테스트 쿠폰이 오전 8시에 다시 온라인 상태가 되었습니다.

이러한 단서는 주요 버그의 배포 및 작동을 합리적으로 설명하는 것 같습니다. 이러한 단서에서 쿠폰 자체의 디자인 문제 외에도 운영 및 유지 관리에 혼란이 있음을 알 수 있습니다. 테스트 쿠폰은 어떻게 온라인에 올릴 수 있나요? 시스템이 통제 불능인데, 후속 위험 예방 조치가 없는 이유는 무엇입니까? 수동으로 오프라인 상태였던 테스트 쿠폰을 어떻게 다시 온라인 상태로 만들 수 있나요? 온·오프라인 쿠폰 운영은 왜 이렇게 엉성한 걸까요? 소프트웨어 시스템이 이 수준에서 운영되고 유지된다면 조만간 문제가 발생할 것입니다. 아무런 문제가 없었다면 정말 운이 좋았다고 할 수밖에 없습니다.

쿠폰 디자인 문제

우리를 매료시킨 첫 번째 질문은 "많은 사람들이 수십만 달러를 벌었습니다"였습니다. 즉, 한 사람이 수천 개의 쿠폰을 받을 수 있다는 의미입니다. 많은 사람들이 이렇게 합니다. 이는 임계값 없는 쿠폰을 받기 위한 기술적 임계값이 매우 낮다는 것을 보여줍니다.

일반쿠폰도 할인쿠폰과 마찬가지로 100위안 구매 시 20위안 할인 등 사용 한도가 있습니다. 무한계 쿠폰은 이름에서 알 수 있듯이 사용 한도가 없는 쿠폰입니다. 100위안 쿠폰으로 100위안의 상품을 구매할 수 있으며 이는 거의 현금과 같습니다. 무한도 쿠폰은 현금과 유사하기 때문에 일반 쿠폰과는 확연히 다릅니다.

현재로서는 걱정하지 마세요. Pinduoduo는 사용자가 3억 명이라고 주장합니다. 각 사용자가 합법적이고 합리적으로 100위안 무제한 쿠폰을 받을 수 있다면 300억 위안이 필요할 것입니다. 계정 등록에 대한 기준은 거의 없습니다. WeChat의 10억 사용자가 합법적이고 합리적으로 등록하고 기준액 없는 쿠폰을 받고 휴대폰을 충전하려면 1000억 위안이 필요합니다.

어제 기준으로 핀둬둬의 시장 가치는 미화 230억 달러에 육박하며, 이는 위안화로 1,600억 위안에 해당합니다. 한도 없는 100위안 상품권을 마음대로 모을 수 있다는 것은 회사를 해산하고 모두에게 보너스를 주겠다는 몸짓으로 보인다. 이는 확실히 임계값 없는 쿠폰에서 기대되는 것이 아닙니다.

무심코 얻을 수 있는 문턱 없는 쿠폰은 아무리 봐도 상업 디자인 자격이 없습니다. 최소한 수량에 상한선을 설정하세요. 모두가 가져가면 수백만 개를 주면 사라집니다. 수백억 달러를 기부하는 것은 일반적인 비즈니스 논리에 맞지 않습니다.

일반적으로 일반 쿠폰이라도 받기 위해서는 추가 조건이 많이 있습니다. 예를 들어, 계정은 한 번만 신청할 수 있거나 새 계정만 신청할 수 있습니다. 계정 인증에는 휴대폰 번호 바인딩, 장치 바인딩, 보안 연결 사용 등 많은 보안 조치가 필요합니다. 계정 인증 및 관리는 서비스 홈페이지의 가장 기본적인 기능입니다. 수천 장의 쿠폰을 받을 수 있다면 기본적인 계정 관리 능력은 합격이라고 볼 수 없습니다. 계정 관리 수준이 표준에 미치지 못한다면 이 웹사이트의 위험은 우리가 상상했던 것보다 더 심해질 것입니다.

이렇게 열악한 계정 관리와 열악한 비즈니스 설계는 예상치 못한 일이며 일반적인 논리와도 일치하지 않습니다. 그러므로 나는 이것이 단지 테스트 쿠폰일 뿐이며 일반 운영 체제에서는 나타나지 않아야 한다는 점에 동의합니다. 그리고 실제로 테스트 쿠폰의 문제라면 드러나는 것은 소프트웨어 개발과 운영, 유지보수의 혼란이다.

혼란스러운 R&D 및 운영 및 유지보수

테스트 쿠폰은 실제로 수동으로 오프라인 상태가 되었다가 자동으로 다시 온라인 상태가 됩니다. 이번 제품 출시 과정은 정말 놀랍습니다. 기능 릴리스는 공식 시스템에 구현되기 전에 설계, 구현, 검토, 테스트 및 승인을 거쳐야 합니다. 이러한 링크 중 하나가 역할을 하는 한 테스트 쿠폰은 자동은 물론 온라인 상태도 아닙니다.

온라인 접속 후에는 지속적인 위험 모니터링이 이루어져야 합니다. 시스템이 임계값을 초과해 폭발하는 경우, 운영 및 유지보수를 통해 심야에 계정이 비정상적으로 활성화되거나 쿠폰 사업이 성행하는 등 폭발에 대한 정보를 즉시 얻을 수 있으며, 이러한 위험도 적시에 차단할 수 있습니다.

운영 및 유지보수 인력에 대한 합리적인 구속 메커니즘은 영리 기업이 주의 깊게 다루어야 할 문제라고 볼 수 있습니다. 무작위 테스트 쿠폰을 공식 시스템에서 어떻게 직접 사용할 수 있나요? 소프트웨어 운영 및 유지 관리는 특히 소프트웨어 품질이 유지되지 않는 경우 위험 관리 및 제어에 특별한 주의가 필요한 링크입니다. 소프트웨어 운영 및 유지 관리 사고는 때로는 산업을 전복시킬 수도 있습니다.

2011년 디지털 인증서 발급 기관에서 Google에 여러 개의 디지털 인증서를 발급했습니다. Google은 이 조직에 디지털 인증서를 신청한 적이 없습니다. 즉, 디지털 인증서의 소유자는 Google이 아닙니다. 이 소유자는 Google 웹사이트를 사칭하여 사용자 이름과 비밀번호를 포함한 사용자 로그인 정보를 훔칠 수 있습니다. 이는 회사의 기술수준에 문제가 있거나(해커공격), 회사의 운영 및 유지관리 능력에 문제가 있는 경우(인증서 무작위 발급)를 의미합니다. 이 보안 문제는 2011년 8월에 노출되었으며 거의 ​​모든 소프트웨어 거대 기업은 즉시 이 조직의 디지털 인증서를 차단하겠다고 발표했습니다. 지난 9월 시장 영향력이 큰 이 기관은 파산을 선언했다.

그러나 이것이 끝이 아닙니다. 디지털 증명서 발급 산업의 운명은 이제 막 시작되었습니다. 사람들은 정보 보안이 디지털 인증 기관에 의존할 수 없다는 사실을 문득 깨닫는 것 같습니다. 시가총액 4000억 달러 규모의 기업의 보안은 시가총액 40억 달러 규모의 기업 운영 능력에 의존할 수 없습니다. 그 결과, 다음 해에는 다양한 신기술이 등장했습니다. 이러한 신기술이 널리 사용된다면 디지털 증명서 발급 산업 전체를 완전히 멸망시킬 것입니다. 그런 날이 우리에게 멀지 않습니다. 요즘 전자증명서발급기관의 생활은 상대적으로 암울합니다.

안전사고가 빈번하게 발생하는 히치하이킹도 장기적으로 보면 비슷한 성질을 갖고 있습니다. 반면, 사고로 잃은 것이 돈뿐이라면 그 영향은 견딜 수 있을 것입니다. 잃어버린 것은 돈뿐이기를 바라지만, 나는 이러한 기대에 대해 낙관적이지 않습니다.

소스를 되돌아보면 이러한 운영 및 유지 관리의 혼란은 일반적으로 소프트웨어 품질과 불가분의 관계에 있습니다. 심각한 소프트웨어 시스템의 경우 생산 방법, 배포 방법, 운영 방법, 승인 방법, 위기 처리 방법 등 이러한 모든 문제를 설계, 구현 및 계획해야 합니다. 해당 당사자는 운영 체제에서 실행될 수 있고 무제한으로 수신할 수 있는 임계값 없는 테스트 쿠폰을 설계했습니다. 이로 인해 그 뒤에 있는 소프트웨어의 품질이 낮고 소프트웨어 개발 프로세스가 느슨하고 무질서하다는 것이 드러났습니다. 우리는 종종 훌륭한 소프트웨어는 훌륭한 프로세스에서 나온다고 말합니다. 혼란스러운 R&D 프로세스로 인해 고품질 제품을 생산하기가 어렵습니다.

우리는 어떻게 해야 할까요?

무식은 두려움이 없습니다. 보안 문제가 특별한 이유는 보안 문제가 발생하지 않으면 문제의 존재를 결코 알지 못할 수도 있고, 물론 문제가 얼마나 심각한지도 알 수 없기 때문입니다. 모든 안보 위기를 낭비해서는 안 됩니다. 우리가 관련 당사자라면 유사한 사고를 피하기 위해 어떤 방법을 사용할 수 있습니까?

가장 시급한 일은 계좌담보대출을 하루빨리 갚는 것입니다. 그렇지 않으면 이 퍼진 후에 이 지방 조각에 많은 눈이 끌릴 것입니다. 다음 단계의 해커 공격이 이미 진행 중일 수도 있습니다.

다음으로, 가능한 한 빨리 다음 사항을 고려하세요.

가장 먼저 해야 할 일은 연구개발 과정을 표준화하는 것입니다. 최고 수준의 소프트웨어 개발 프로세스를 통해 생산된 제품은 아무리 품질이 좋지 않더라도 더 나쁠 수는 없습니다. 이러한 연구 개발 과정에서 프로그래머는 혼자서 행동할 수 없습니다. 요구 사항을 논의하고, 디자인을 미리 보고, 기능을 검토하고, 코드를 검토하고, 소프트웨어를 테스트하고, 시스템을 시험 운영해야 합니다. 모든 사람은 실수를 할 것입니다. 모든 단계를 지켜보는 눈이 몇 쌍 더 있으면 실수할 가능성이 크게 줄어듭니다. 프로그래머는 연구 개발 과정을 통해 빠르게 성장할 수 있으며 오류 가능성을 더욱 줄일 수 있습니다. 좋은 시스템은 사람들을 성공시킬 수 있지만 나쁜 시스템은 사람들을 파괴할 수 있습니다.

두 번째로 해야 할 일은 코드의 보안에 주의하는 것입니다. 코드 보안이 모두 해킹을 의미하는 것은 아닙니다. 임계값 없는 쿠폰을 사용하는 것은 심각한 안전 사고입니다. 코드 수준에서 반영하면 계정 관리가 안전하지 않고, 비즈니스 로직이 검증되지 않고, 운영 및 유지 관리 권한 관리가 느슨하고, 비정상적인 위험이 제때에 경고되지 않을 수 있습니다.

세 번째로 해야 할 일은 비즈니스 디자인을 미리 추론하는 것입니다. 해커가 없더라도 1000억 위안의 무한계 쿠폰은 어떤 상업 조직도 지불할 비용이 아닙니다. 이것은 유치원 수준의 실수입니다. 비즈니스 논리가 사실이 아닌 경우 이는 소프트웨어 요구 사항에 결함이 있음을 의미합니다. 버그가 있는 요구 사항을 기반으로 구축된 소프트웨어에도 버그가 있습니다.

네 번째로 해야 할 일은 제품 출시 메커니즘을 개선하는 것입니다. 제품 출시를 위한 체크포인트 및 파이프라인을 설정하세요. 체크포인트가 실패하면 파이프라인이 중단되고 제품이 출시되지 않습니다. 이러한 체크포인트에는 제품 시운전, 기능 승인, 모니터링 조치 지원 등이 포함됩니다.

다섯 번째로 해야 할 일은 운영 및 유지보수의 위험 예방 능력을 향상시키는 것입니다. 사용자 3억 명, 시가총액 230억 달러 규모의 기업, 전자상거래 기업이 해커의 눈에 보이는 표적입니다. 특히, 이용자의 개인정보 및 현금흐름은 회사의 생사와 직결됩니다. 이 규모의 회사에서는 탁월한 위험 예방 능력을 갖추는 것이 가장 기본적인 요구 사항이지 금상첨화는 아닙니다. 적극적인 위험 감지, 시기적절한 경고, 신속한 대응은 모두 반드시 따라야 하는 조치입니다.

무임계 쿠폰의 사업 설계가 추론되고, 소프트웨어 기능이 논의되고, 구현 코드가 검토되고, 출시 리허설이 이루어졌다면 사고는 적시에 경고될 수 있습니다. 링크의 역할이 있었기 때문에 이번 사고는 그렇게 비극적이지는 않을 것입니다!

나는 모든 것에 관계없이 품질을 속도로 바꾸면서 전속력으로 전진하려는 회사의 경쟁 압력과 동기를 이해합니다. 그러나 현재의 속도를 추구할 때에는 3피트 떨어진 미래도 고려해야 합니다. 그렇지 않으면 이 엉덩이 뒤에 쌓인 빚은 정말 떨쳐버릴 수 없는 큰 꼬리가 될 것입니다.

성명:
이 기사는 微信公众号 InfoQ에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제