왜 이렇게 에러가 많이 날까? 개발자의 변명
몇 달 전 처음으로 브런치가 카톡연동 "간편 로그인"이라는 것을 소개했을 때 브런치를 한 일주일 간 쓸 수가 없었다. 간편 로그인 단계에서 "카톡으로 로그인하기"를 누르면 카톡계정은 제대로 뜨는데 마지막 단계에서 로그인 실패. 뤼튼(https://wrtn.ai)도 마찬가지로 로그인 에러. 그래서 한국 시간에 맞춰서 상담시간을 통해 문의도하고, 답을 기다리고, 스크린샷도 보내고, 시키는 데로 이것저것 따라 해 봐도 안 돼서 포기하고 있었는데 한 3일 정도 지나니 되더라.
요즘 앱들, 왜 이렇게 자꾸 망가져?
가끔은 앱이 망가져도, 내가 뭘 잘못 한 건지, 아니면 앱이 망가진 건지 헛갈리는 때가 있다. 내가 버튼을 안 눌렀나? 뭘 잘못 입력했나? 그래서 또 하고, 같은 것을 몇 번 시도하고 나서야, ‘내 잘못이 아니구나. 앱이 망가진 것이구나’ 한다. 이럴 땐 정말 열받는다. 이런 경험 다들 있으실 거다. 앱을 만드는 나 조차도 헛갈리는데 사용자분들은 얼마나 짜증 날까?
오늘은 앱(웹 사이트를 포함)을 만드는 개발자로서, 앱이 망가지는 주요 요인들, 연동 로그인의 장/단점, 그리고 미래의 전망, 무엇보다 개발자로서 자책을 좀 해 보는 시간을 갖겠다.
우리가 보통 앱이 망가졌다고 하면, 사용자가 앱에서 하려는 일이 잘 안 되거나, 앱이 예상치 않은 행동을 할 때에 망가졌다고 한다. 개발자들은 앱이 망가졌다, broken이라는 표현보다는 "bug가 났다"라고 한다. 위의 예처럼, 대놓고 "오류코드 500"이 뜨면 “고장 났구나” 하고 사용자가 바로 알지만, 그냥 소리 없이 안될 때는 정말 답답하고 짜증 난다.
비단 새로 생긴 앱만 bug이 생기는 것은 아니다. 오래전부터 사용하던 페북이나 인스타도 안 되는 때가 요즘은 정말 잦다. 예를 들면 인스타를 앱 말고 그냥 컴퓨터 또는 핸드폰의 브라우저를 통해서 가면, 윗 줄의 스토리와 오른쪽의 메뉴들은 로딩이 안되거나 사진들이 뜨지 않거나 하는 일이 많다. 그래서 항상 새로고침을 해서 앱을 재 로딩해야 한다. 그래도 새로고침을 하면 사진들이 뜨니까 그냥 큰 불만 없이 쓴다.
보통 앱에 bug이 나타나는 경우는 몇 가지 이유가 있다. 주요 원인들은:
Edge case, 즉 거의 발생하지 않는 특정 조건이 나타났을 경우다. 개발자가 이런 상황을 생각을 못해서 앱이 오작동하는 것이다. 예를 들면 입시 서류를 받는 대학교 앱의 경우, 고등학교명을 물어보는 란에 "검정고시"라고 입력할 경우 에러가 나는 것이다. 개발자가 “검정고시“라는 옵션을 생각 못해서 생긴 오류다.
New Feature, 새로운 기능이 추가되었을 때 기존 기능이 망가지는 경우다. 예를 들어, 카톡이 로그인하는 방법을 바꿨는데 카톡을 이용해 로그인하는 제3의 앱들의 로그인에 실패하는 경우다.
Cross Browser Compatibility, 즉 브라우저 호환성 문제. 예를 들면, 크롬에서는 되는데 사파리는 안 되는 경우.
Scaling, 규모가 갑자기 커진 경우다. 예를 들면, 우리 회사의 앱은 보통 10만 사용자가 있는데 하룻밤 사이에 500만으로 사용자가 늘어나면, 시스템이 과 부화돼서 연결이 끊어지거나 서버가 제대로 작동을 못하는 경우.
요즘은 Security가 문제 되는 때도 종종 듣는다. 예를 들면 서버가 해킹을 당하거나, 사용자의 정보가 노출/변환돼서 앱이 오작동하는 경우다.
Server 문제. 자주는 아니지만, 카톡처럼 서버에 불이 나거나 데이터센터에 정전 등 문제가 생기는 경우. 큰 회사들은 자기네 서버가 따로 있어서 이런 위험을 미리 대비(contingency plan) 해야 하고 작은 회사들은 아마존이나 구글 서버를 사용해서 돈만 내면 알아서 해준다.
여러 가지 이유 중에 오늘은 Edge case와 새로운 기능 추가 시 발생되는 오류에 중점을 두겠다. 왜냐하면 이들이 젤 큰 오류를 내는 이유들이고, 또 100% 개발자의 책임이기 때문이다. 물론 규모나 정보보안 문제도 개발자의 책임이지만, 이런 것은 다른 요인도 작용한다. 예로, 회사가 사용자 정보보안을 별로 중요하지 않게 여겨서 보안에는 시간/돈을 쓰지 말라는 지침이 있는 경우(이런 회사 실제로 꽤 많다), 아무리 개발자가 최선을 다해도 해커들의 공격을 피해 갈 수 없다.
어쩔 때는 앱이 망가진 걸 알면서도 안 고친다. 돈에 연관이 안 되는 기능, 아니면 사용자가 별로 신경을 안 쓰는 기능, 앞서서 말했듯 그냥 새로고침 하면 고쳐지는 경우. 아님 돈 되는 기능을 우선 구축/정비하느라 시간적인 여유가 없어서 못 고치는 경우도 많다.
작은 회사들은 자기네 앱이 고장 난 것을 모르는 경우도 흔하다. 큰 회사들은 돈도 많고, 개발자도 많으니까 오류를 모니터 하는 시스템이 나름 잘 구축되어 있다. 예를 들어, 사용자가 에러를 겪으면, 서버가 해당 팀이나 부서에 오류가 났다고 알린다. 오류 모니터만 전문적으로 하는 서비스들도 많다(Bugsnag, Sumo Logic 등). 그래서 소비자가 회사를 연락해서 앱이 고장 났다고 하기 전에 개발자들이 처리에 들어간다. 그런데 이런 모니터링 시스템이 돈과 인력이 꽤 든다. 그래서 스타트업들 중에는 이런 거 없이 그냥 버티는 곳도 많다. 이럴 때는 정말 사용자가 회사에 알려야 오류가 났다는 것을 안다.
물론 지난번 카톡 사태에서도 경험했지만, 큰 회사들도 당연히 허점은 있다. 아무리 모니터링 시스템이 잘 되어있어도 여러 이유로 앱은 망가지게 마련이다. 그런데 이렇게 큰 회사 앱이 망가지면, 다른 앱까지 사용 못하는 경우가 생길 수 있어서 더 사용자들을 불편하게 한다.
한 가지 재미있는 사실은, 큰 앱 중에는 한꺼번에 에러가 똑같이 나는 게 아니라, 어떤 사람은 에러를 경험하고 어떤 사람들은 아닌 때가 많다. 이유는 크게 두 가지이다. 첫째는 새로운 기능 추가 시, 100% 사용자에게 한꺼번에 새 기능을 출시하는 것이 아니라 10%로 시작해서 100%로 점차 늘려나가는 방법을 쓰는 경우. 그래서 고장이 나도 우선 10% 사용자만 에러를 경험한다. 그 후에는 앱을 고치고 개선해서 서서히 늘리는 방법을 쓰는 것이다. 두 번째 이유는 서버가 여러 지역에 있는 경우. 즉 어떤 서버는 오류가 나고, 어떤 곳은 아닌 경우가 있어서 그렇다.
카톡 같은 여러 다른 앱들이 로그인을 사용할 때 쓰는 앱이 망가지면, 정말 골치 아픈 현상이 일어난다. 카톡을 이용해서 사용하던 다른 앱들도 사용이 불가하기 때문이다. 미국에서 쓰는 앱들도 마찬가지이다. 보통 페북이나, 구글계정을 통해서 다른 앱을 사용하는 사람들이 많은데, 이러다가 페북/구글이 안되면 이만저만 불편한 게 아니다. 이런 연동 로그인을 전문용어로 Open Authorization, 짧게 OAuth라고 한다.
이렇게 다른 앱을 사용해서 로그인을 하면 좋은 점과 나쁜 점이 있다. 이런 장단점을 알고 사용자가 결정을 해야 한다.
가장 중요한 장점은 역시 정보보안이다. 카톡을 통해서 로그인을 하면, 사용하려는 앱에게는 내 정보를 주지 않아도 된다. 지금 내가 쓰는 브런치도 카톡을 통해서 로그인한다. 브런치는 나에 대해서 아는 것이 얼마 없다. 내 이메일 정도? 카톡만이 내 모든 정보를 가지고 있다. 그리고 두 번째 장점은 아무래도 클릭 한 번으로 별도의 가입 없이 앱을 쓸 수 있는 편리함이다. 단점은, 앞서서 말했듯 카톡이 에러가 나면 연쇄적으로 브런치도 못 쓴다는 것이다.
사용자로서, 만약에 사용하고 있는 앱이 믿을만하고, 나에게 정말 중요한 앱이라면 카톡이나 페북을 통해서 사용하는 것보다 직접 계정을 만드는 것도 나쁘지 않다. 그러나 앱이 만들어진 지 얼마 안 되었고, 내가 얼마나 쓸지 잘 모르겠으면 처음엔 카톡을 통해서 로그인하고 쓰는 게 좋다. 혹시 앱이 해킹을 당하거나 회사가 망해도 내 정보는 카톡에 있으니까 보호된다. 요즘은 회사가 망하면 사용자 정보를 파는 나쁜 놈들도 많다. 그래서 더 조심해야 한다.
개발자들 똑똑하다고 만나면 지들 자랑들이 거창한데, 왜 앱은 이따위로 만들까? ¯\_(ツ)_/¯
내가 실리콘밸리에서 난다 긴다 하는 앤지니어들이랑 일을 해보니까, 똑똑하다고 bug을 안 만드는 것도 아니고, 신입이라고 계속해서 앱을 망가트리는 것도 아니더라.
똑똑한 개발자일수록, 물론 다는 아니지만, 모든 것을 쉽게 만드는 것이 아니라, 어렵게 만든다. 내 경험엔 많은 개발자들 새로운 기술을 사용하고 싶어 하고, 좀 더 복잡한 테크놀로지를 사용하는 것을 즐긴다. 이렇게 모든 것을 복잡하고 새로운 기술을 써서 만들다 보니, 자꾸 에러가 생기고, 문제가 생긴다. 그래서 내가 지난번 공부 잘해야 살만한 나라에서도 한번 이야기했지만, 똑똑한 개발자 10명이 앱을 만들면 오히려 더 사용하기 힘들고 bug이 많은 앱이 나온다. 사용자를 생각하는 앱을 만들기보다 본인들이 만들기 즐거운 앱을 만들어서 그렇다. 이것이 결정적으로 요즘 앱이 잘 안 되는 이유다.
실리콘밸리에서 변화하는 테크놀로지들을 찬양만 할 것은 아니다. 필요 없이 새로운 것이 너무 많이 나온다. 수많은 Javascript 프레임워크들이 좋은 예이다. 무슨 특정한 문제를 해결하기 위해서 나온다기보다는 요즘은 그냥 새로운 것을 찾는 개발자들의 욕구 해소를 위해 나오는 것 같다. 얼마나 효율적으로 쉽게 문제를 해결할 수 있을까? 에서 완전히 벗어나, "새 거니까 한번 써보자"의 분위기로 변했다. 그만큼 새로운 것의 도입이 너무 복잡하고 불필요한 앱들을 만들었다. 그리고 이렇게 변하는 테크놀로지, 다양한 새 도구에 능숙해지려고 개발자들은 계속 새로운 것을 배우고 써먹는다. 그리고 그에 대한 결과가 자꾸 망가지는 앱들이다.
물론 앱을 만드는 것이 그렇게 쉬운 일은 아니지만, 그렇다고 해서 그렇게 어려운 일도 아니다. 큰 앱들은 하는 일도 많고, 데이터가 워낙 크고 복잡하게 엉켜있으니 당연히 복잡하고 난해하다. 그러나 그다지 데이터가 크지 않은 것 같은 새 앱도 망가지는 경우가 많다. 이것은 전적으로 개발자들 탓이다.
참고로, 요즘에는 웹사이트나, eCommerce 사이트 같은 경우에는 개발자 없이, 한 달에 몇 만 원으로(또는 무료로) 앱을 만들 수 있다. 참고로 나는 작은 스타트업이나, 중/소기업 사장님들이 앱을 만드는 것에 대해 문의를 하시면, 주저 없이 이렇게 말한다.
웹사이트는 홈페이지제작해 주는 곳에 맡기셔서 그냥 버틸 때까지 버티세요. 개발자 쓰셨다가는 괜히 복잡한 웹사이트만 만들게 됩니다. 그리고 만들고 끝이 아니라 계속해서 업데이트하는데 돈/시간 엄청 많이 듭니다.
참고로 여기 웹사이트를 공짜 또는 적은 비용으로 만들어 주는 곳들이 나열되어 있다. 이런 데서 만들어서 유지가 되면, 그게 최고다. 괜히 돈 들여서 촌스럽고 복잡한 웹사이트는 선뜻 만드시지 않기를 바란다.
재미있는 자료가 있어서 하나 가져왔다. 웹사이트 만드는데 얼마나 들까? 참고로, 이것은 그냥 "만드는데 드는 돈과 시간"이다. 앞서 말했듯 앱은 만들고 나면 유지비용이 만드는 것보다 더 든다.
혹시 90년대에 핸드폰 사 보신 분 있으신가요? 그때 핸드폰 박스에 들어있던 유저 매뉴얼 기억하세요?
요즘엔 Mottorola T2260보다 기능과 성능이 1000배는 더 있는 핸드폰을 살 때 사용설명서는 따라오지 않는다. 왜? 이제는 사용자가 핸드폰을 켜기만 하면 본능적으로 사용법을 알 수 있게끔 디자인이 되어있어서 그렇다. 이렇게 까지 오는데 한 30년쯤 걸린 듯하다. 핸드폰이 이렇게 쉽게 쓸 수 있도록 진화했듯이, 사용자 또한 진화했다. 우리가 한 번도 가보지 않은 웹사이트에 가도 헤매지 않고 대충 어디에 무엇이 있고, 버튼을 누르면 어떤 일이 벌어지는지 가늠할 수 있는 이유는 앱도 진화하고, 앱이 사용자들도 진화시켰기 때문이다.
우리가 90년대 처음 이메일이라는 것을 사용하고 대학교들이 웹사이트를 처음 만들기 시작할 때가 있었다. 그때는 웹이 정말 간단하고 기능에는 한계가 있어서 고장 났다는 개념조차 없었다. 그리다가 비행기표를 처음으로 인터넷으로 사고, 요즘은 짜장면도 앱으로 시켜 먹으면서, 앱 없이 사는 세상은 생각할 수 도 없게 되었다.
앱들은 여러 가지 면에서 지금 과도기를 겪고 있다.
지금처럼 모두가 쓰는 앱을 만들어야 하니까 앱을 만드는 개발자들도 많아졌다. 앱이 많다 보니까, 경쟁도 심해져서 뭐든 빨리빨리 만들어야 한다. 개발자들도 해야 할 일이 너무 많고, 시간은 별로 없고, 시스템도 완전 자동이 아니고 반쯤만 자동이고, 정보는 여기저기 난장판으로 많다. 정보는 많은데 뭐가 옳은 것인지 구별이 쉽지도 않다. 그래서 복잡하고 완성도가 떨어지는 앱들이 오늘날 주를 이룬다.
내 생각에는 이런 과도기가 끝나고, 약 10 - 20년 후에는 정말 편리한 완성도가 높은 앱들이 나올 것 같다.
우리는 어쩌면 지금쯤 Samsung E250정도의 앱들을 쓰고 있는지도 모르겠다. 그냥 전화 걸리고 문자만 잘 보내지면 좋다. 나머지는 되기도 하고 안될 때도 있고, 뭐 그런 정도.
이런 과도기를 벗어나면, 언젠가는 우리도 삼성 갤럭시나, 아이폰쯤 되는 앱을 쓰는 날이 올 것이다.
그때까지만 참아주세요.
이따위로 에러 많은 앱을 만들어서 죄송합니다!
대문은 Photo by Elisa Ventur on Unsplash