사용자 도구

사이트 도구


사이드바

blog:start

갤럭시탭 필기 사용기

결론: 갤럭시탭 S3를 최근에 게임용 안드로이드 태블릿 현역에서 퇴역시켰고 대신 서피스 프로 다음의 서브 원노트 필기 기계로 활용하기 시작했습니다. 하드웨어는 요구를 충족하지만 일부 소프트웨어는 어처구니없습니다. 사용할만합니다.

배경

맨 처음 모바일 개발을 시작하고 나서 처음으로 안드로이드 태블릿을 사용하기 시작했습니다. 기계의 용도는 처음에는 게임을 구동하는 것이었지만 시간이 흐름에 따라 몇몇 최신 게임이 구동되지 않기 시작하고 그런 게임이 점점 더 늘어나면 다른 안드로이드 태블릿을 구입하곤 했습니다. 그렇게 뒤쳐진 기계는 필요한 사람들에게 형식적인 비용을 받고 넘기거나 다른 용도로 활용하곤 했습니다. 이번에 그렇게 수명이 끝나가는 안드로이드 태블릿인 갤럭시탭1)은 마지막으로 리니지2M2)을 돌렸는데 이 프레임레이트로 게임을 계속하다가는 조만간 성질이 더 나빠지겠다는 결론을 내리고 게임을 돌리는 용도로 더이상 사용하지 않기로 결정했습니다. 그런데 이 기계는 원래 와콤 기반의 S펜이 셀링포인트였고 원래 메인 필기 기계인 서피스 프로와 함께 서브 필기 기계로 활용해보기로 했습니다.

필기에 원노트3) 앱을 적극적으로 활용하기 시작한 것은 지난 2012년 부터입니다. 당시에 윈도우 기반인 삼성 슬레이트 PC4)와 S펜을 사용해 필기를 시작했고 원노트는 그 시점에도 이미 오랫동안 텍스트와 이미지를 아무렇게나 붙여넣어 사용해 왔습니다. 그 시대에도 원노트는 무겁고 인터넷 시대에 잘 어울리지 않는 이미지로 알려져 있었지만 그 시대에도 이미 장기간에 걸쳐 사용할 소프트웨어는 그걸 충분히 지탱할 능력이 있는 회사 제품을 사용해야 한다는 인식이 있었습니다. 그렇게 필기 역시 원노트에 의존하기 시작했습니다.

갤럭시탭

갤럭시탭 기계 자체는 스토리지가 32기가로 제 메인 노트를 열지도 못합니다. 노트를 열려고 시도하면 스토리지를 가득 채우고 에러메시지를 표시한 다음 다시 원노트를 실행할 수도 없는 상태가 됩니다. 하지만 다른 노트북을 새로 만든 다음 이 노트북에만 노트를 작성하고 다른 윈도우 기반 기계에서 이 노트북에 작성한 노트를 내 메인 노트로 이동하는 식으로 사용하고 있습니다.

윈도우 기반 원노트에서는 긴 필기 노트를 작성하면 종종 기기의 팬이 돌며 급격하게 느려져 문제가 생겼습니다. 가령 슬레이트 PC에서는 내 눈에는 이미 작성된 것처럼 보였던 필기가 사실은 스크롤되지 않은 잘못된 좌표에 작성되어 다른 필기 위에 덮혀 작성될 때가 있었습니다. 사양이 더 높은 서피스 프로로 바꾸면서 이 문제는 급격히 줄어들었지만 여전히 PDF로 익스포트할 때 A4 크기 페이지를 기준으로 노트 하나가 6에서 8페이지에 이르면 이 현상을 겪었습니다. 그런데 갤럭시탭에서는 비슷한 노트 크기에 이르러도 앱이 급격히 느려지지 않았습니다. 다만 더 긴 노트를 작성하면 마지막에 작성한 약 10글자 정도가 다음번 스와이프 동작에도 스크롤되지 않고 마지막으로 작성된 위치를 유지하다가 몇 초 기다리면 원래 자리로 돌아가곤 했습니다. 서피스 프로와 비교해 긴 필기 노트를 작성하기에 더 안정적입니다.

S펜

과거 슬레이트 PC를 사용할 때의 S펜은 화면 가장자리로 이동할수록, 화면 하단에 비해 상단으로 이동할수록 화면에 펜이 닿는 지점과 실제 선이 그어지는 지점 사이에 거의 1cm 가까운 오차가 생기곤 했습니다. 그래서 사실상 정상적으로 필기할 수 있는 영역은 화면의 절반보다 좁았습니다. 반면 갤럭시탭은 화면 전체에 걸쳐 오차가 훨씬 적습니다. 단 EMR 기술을 지원하지 않는 구형 S펜을 사용하면 화면 전체에 걸쳐 오차가 생깁니다. 갤럭시탭에 함께 들어있는 S펜을 사용하면 화면 전체에 걸쳐 오차가 줄어듭니다. 화면 모서리 부근에서는 여전히 오차가 있습니다. 하지만 필기하는 수준에서는 적당합니다.

구형 S펜, 서피스펜은 펜 뒤쪽에 지우개 버튼이 붙어있어 펜을 휙 돌려 바로 지우개로 사용할 수 있습니다만 갤럭시탭에 붙어있는 S펜은 뒤쪽에 버튼이 없어 불편합니다. 지우개 동작은 펜 아래쪽에 있는 버튼을 누르고 있으면 되는데 납득할 수 있는 동작이지만 제가 기존에 사용하던 다른 펜들과 동작이 달라 종종 실수하곤 합니다. 또 실제 볼펜이나 서피스펜에 비해 얇아 오랫동안 쥐고있으면 훨씬 더 피곤합니다.

이 신형 S펜의 무시무시한 점은 펜 자체가 아니라 삼성의 펜 소프트웨어에 있습니다. 필기를 주력으로 사용하는 입장에서 펜으로 메뉴를 불러내고 펜으로 필기 이외의 동작에 접근하는 기능들은 근본적으로 필기를 방해합니다. 다른 어지간한 기능은 모두 끌 수 있게 되어있지만 펜을 쥔 채로 엄지손가락으로 버튼을 짧게 누르면 나타나는 바로가기 메뉴만은 끌 수 없었습니다. 한참 글씨를 쓰다가 실수로 버튼을 누르면 화면을 뒤덮고 바로가기 메뉴가 나타납니다. 글씨를 쓰던 손이 메뉴를 무시하고 글씨를 이어서 쓰면 메뉴가 닫히고 원노트로 돌아가지만 그 사이에 몇몇 획이 누락되어 마지막 단어를 지우고 다시 써야 합니다. 이 버튼은 지우개로도 사용되므로 없애버릴 수도 없어 굉장히 피곤합니다. 아마도 광고에 나오는 화면의 요소에 동그라미를 치고 몇 글자 적는 용도로는 괜찮겠지만 적극적으로 화면 전체를 글씨와 그림으로 가득 채우는 입장에서는 어처구니없습니다. 훌륭한 하드웨어를 간단한 소프트웨어 기능만으로 처참하게 만들어놨습니다.

결론

하지만 서피스 프로는 필기하지 않을 때 독에 연결해놓고 외부모니터를 통해 사용하는데 이 서피스를 독에서 뽑지 않고 필기할 수 있는 다른 기계가 있고 이 기계에 필기하는 경험이 꽤 괜찮다는 점은 작업환경을 개선하는데 큰 도움이 됐습니다. 서피스로 다른 원노트 페이지를 펼친 채 그걸 보면서 내 바로 앞에 있는 갤럭시탭에 필기할 수 있는 환경이 되자 노트를 더 잘 활용할 수 있게 됐습니다. 기계가 좀 작고 펜이 좀 가늘어 아쉽지만 딱히 심각한 문제는 아닙니다. 다음번에는 이런 용도로 활용할 것을 고려해 게임용 안드로이드 태블릿을 13인치 급의 좀더 큰 모델로 구입하면 어떨까 생각하게 되었습니다.

· 2020-02-17 09:18

위협 - 강제노동의 동작원리

결론: 이 글을 통해 여러분들은 게임비즈니스에서 역사적으로 절대 실패한 적이 없는 프로젝트 관리기법을 적용해 팀원들이 주인의식을 가지고 자발적으로 일하게 만드는 방법을 배우게 됩니다.

드랍

드랍된 프로젝트를 상상해봅시다. 회사에서 드랍은 출시보다 훨씬 더 흔한 일이기 때문에 예상보다 훨씬 더 그 때 일어나는 일일 머릿속에 떠올리기 쉬울 겁니다. 사실은 얼마 전부터 예상5)하고 있었습니다. 리드그룹은 그동안 자신들이 어떻게든 감당하던 공포를 더이상 팀으로부터 격리하는데 실패합니다. 공포는 사무공간의 공기를 텁텁하게 짓누르고 이를 격리할 수 있었던 이전에 비해 더 위험한 목표가 아무런 안전장치 없이 끈끈한 점액처럼 바닥에 흘러다닙니다. 위기를 느끼고 뭔가 해보려 노동시간을 늘리고 모든 것이 잠깐동안 완벽하게 동작하는 것처럼 보이지만 이 찰나는 머지않아 수명을 다하고 한 점으로 모여들어 블랙홀이 될 것입니다. 우리들의 잔해는 슈바르트실트 반지름 근처에서 다시는 관측할 수 없을 것입니다.

드랍은 고통스러운 일입니다. 이 거대한 바이너리 덩어리를 만들어내기 위해 경영진의 승인을 받아 팀을 세팅하고 맨 처음으로 파일서버와 웹서버 하나를 만들어놓고 형상관리도구를 설치하고 계정을 만들고 팀원들에게 메일을 보내고 빌드머신을 설정하고 또 분산빌드환경을 설치하고 위키에 첫번째 문서를 올리기 시작했습니다. 적당한 사람들에게 연락을 돌려 형식적인 면접을 거쳐 시작멤버를 모으고 프로토타입을 만들어 회사를 설득해 티오를 받아내고 채용공고를 올리고 머리로는 양산형 게임을 개발한다는 사실을 이해하고 요즘 가장 잘 나가는 게임의 모든 것을 배껴댈 준비를 마쳤지만 결코 가슴으로는 이를 납득하지 못하며 괴로워하고 또 면접을 보고 새 계정을 만들고 매뉴얼을 업데이트하고 마일스톤 계획을 세우고 내일 출시할 것도 아니지만 오늘 갑자기 올라온 온갖 코드가 순조롭게 통합을 깨는 상황을 해결하기 위해 초과근무를 일삼았습니다. 그러는 동안에 동료들에게, 이 바이너리 덩어리에, 이걸 만들기 위한 모든 환경에, 심지어는 파티션에 설치된 이케아 케노피에마저 정이 들었습니다. 그런 프로젝트가 드랍된다는건 힘든 일입니다. 언제나 출시보다 드랍을 더 많이 겪지만 이 드랍은 정말 익숙해지지 않습니다.

드랍은 정신적으로도 고통스럽지만 또 육체적으로도 고통스러운 일입니다. 과거에도 똑같았지만 현대의 게임회사 직원의 신분은 서류상으로는 정규직입니다만 실제로는 프로젝트와 운명을 함께하는 비정규직입니다. 회사는 항상 형식적으로는 프로젝트의 드랍과 관계 없이 직원들의 고용을 보장하지만 실상은 꽤 많이 다릅니다. 운이 좋다면 대기 부서에서 정신을 서서히 파괴할 수도 있고 좀더 운이 나쁘고 또 좀더 흔하게는 업무를 중단하고 프로젝트 산출물에 접근권한을 잃어버린 다음 회사 안의 다른 프로젝트팀을 만나며 좀더 빨리 정신을 파괴할 수도 있습니다. 드랍된 프로젝트의 구성원들은 항상 실패한 패배자들로 다뤄집니다. 느리든 빠르든 결국 정신이 파괴되고 이들은 더이상 파괴될 정신이 다 사라지기 전에 회사가 원하는 대로 회사를 떠납니다.

효율

이론적으로 팀이 최고 효율을 내도록 만드는 방법은 훨씬 간단합니다. 사람들이 일단 출근하면 회사 문을 걸어잠그고 계속해서 일을 시키는 겁니다. 하루에 8시간 일하는 상황을 기준으로 한다면 모든 사람을 집에 보내지 않고 24시간 일하게 만들면 대략 3배 빨리 일할 수 있습니다. 3년 걸릴 프로젝트라면 1년 안에 출시할 수 있고 1년쯤 걸릴 프로젝트라면 앞으로 4개월 안에 출시할 수 있겠네요. 이론상으로는 그렇지만 실제로는 그렇지 않다는 사실을 모두가 알고 있습니다. 하지만 이 사실을 납득하지 못하는 몇몇 분들로부터 비슷한 시도가 일어나 왔고 결국 법률에 의해 노동시간 제한이 생겼습니다. 하지만 이 노동시간 제한 역시 여전히 이를 항상 실행할 때 개개인에게 강한 부하를 줍니다. 일생 중 잠자는 시간을 제외한 나머지 시간에 거의 절반에 가까운 시간을 일해야만 이 시간을 채울 수 있습니다. 게다가 회사에 출근하기 위해 이 앞뒤로 시간을 더해야만 하므로 실제로는 절반보다 더 많은 시간을 일을 준비하는데, 일하는데 사용합니다. 이런 상황에서도 팀이 최고 효율을 내도록 만드는 방법은 여전히 간단합니다. 사람들을 24시간 가둬놓고 일하게 만들 수 없다면 법률을 어기지 않으면서 하루에 약 11시간동안 일하게 하면 됩니다. 출퇴근시간을 제외하고서요.

반발

실은 이 극도로 효율적이며 대한민국 법률을 위반하지도 않는 방법은 실제로는 잘 동작하지 않습니다. 가장 큰 이유는 노동시간만 늘린다고 해서 사람들이 알아서 그 시간을 가득 채울만한 목표를 스스로 설정하지 않기 때문입니다. 연말에 전직원을 비싼 밥집에 모아놓고 언제나 절대영도에 가까운 시장상황과 오래 전부터 이미 현실이 된 반복적인 위기와 이를 모두가 함께 극복하기 위한 주인의식과 정신무장을 아무리 이야기해도 목표를 스스로 설정하질 않습니다. 그래서 이 사람들이 경영진이 되지 못하고 그저 그런 게임 개발 스탭으로 남는 모양입니다. 스스로 목표를 설정하지 않을 뿐더라 조금이라도 빈 틈이 생기면 노동시간에 어뷰징을 시도합니다. 흡연을 반복하며 긴 시간을 낭비하기도 하고 화장실에서 15분을 초과해서 앉아있기도 하며 사용하는 사람이 없을 거라고 생각하고 최소 수량만 갖다놓은 안마의자에 앉아 몇십분씩 시간을 날려버립니다. 이런 상황을 문제삼으면 반발이 일어납니다. 회사가 처한 위기를 극복해나갈 사람들이 이런 몸가짐으로 업무를 수행하는데는 특단의 대책이 필요합니다.

가짜 목표

오랜 전통에 빛나는 검증된 방법이 있습니다. 이 방법을 사용하기만 하면 모든 스탭들이 굳이 문을 잠그지 않아도 알아서 집에 가지 않으며 알아서 초과근무를 하고 알아서 화장실 갈 시간을 절약하며 알아서 담배를 필터까지 씹어먹고 올 겁니다. 일단 현재 빌드 상태는 중요하지 않습니다. 어떤 게임을 만들 것인지도 중요하지 않습니다. 일단 이번달에는 실장님 보고 빌드를 개발할 겁니다. 실장님이 빌드 퀄리티에 만족하지 못하면 목표가 바뀔 수 있습니다. 목표가 바뀌면 그리 멀지 않은 달력에 설정된 공개일정은 그대로 둔 채 많은 사양이 변경될 위험이 있으므로 최대한 빌드를 갈고닦아 그럴듯한 모양을 만들어내야 합니다. 이 과정에 기술부채가 조금 생기더라도 빌드에 드러나지 않을테니 별로 신경쓰지 않아도 됩니다. 아트와 게임디자인에서 사용할 도구를 개발하지 않아도 괜찮습니다. 이 도구를 실장님께 시연할 것도 아니잖아요.

그 다음달에는 본부급 보고를 준비합니다. 이 보고에는 당연히 시연이 필요하며 한 번도 만난 적 없는 경영진을 가상의 고객으로 설정한 다음 이 가상의 고객이 제시할지도 모르는 가상의 요구사항에 대응합니다. 이 가상의 고객은 신규 클래스에 관심을 가질지도 모르고 또 화려한 전투진행에 관심을 가질지도 모릅니다. 또 이 가상의 고객은 아이템 아이콘의 퀄리티와 가챠시스템의 효율과 매력에 관심을 가질지도 모릅니다. 또 이 가상의 고객은 이른바 '콘솔게임같은' 멋진 언플레이어블 컷씬에 매력을 느낄지도 모릅니다. 또 이 가상의 고객은 마을의 모든 주민들이 절차생성된 서로 다른 애니메이션을 재생하며 지나가는 주인공을 칭송에마지않는 장면을 멋지다고 생각할지도 모릅니다. 팀 전체가 가상의 고객을 상상하며 가상의 고객이 관심을 가질지도 모르는 모든 부분에 집중해 완벽하게 돌아가는 빌드를 만들어냅니다. 이 가상의 고객은 우리들에게 급여를 지급합니다. 하지만 결코 우리가 출시한 제품을 구입해주지는 않을 것입니다.

그 다음달에는 경영진급 보고를 준비합니다. 그 다음달에는 대표급 보고를 준비합니다. 그 다음달에는 다시 실장급 보고를 준비합니다. 이를 끝없이 반복하게 만들면 됩니다. 이제 사람들을 가둬놓지 않아도 사람들은 스스로 가상 고객의 롤을 플레이하며 가상 고객처럼 행동합니다. 단기적으로 완벽해보이는 빌드를 개발하는데 최선을 다하고 그렇게 행동하지 않는 사람들을 공격합니다. 기술부채가 조금 쌓이겠지만, 일상적인 플레이에 필요한 아트 에셋이 좀 부족하겠지만, 요구사항에 맞춰 고치지 못한 UI 위젯들은 아슬아슬하게 수정하고 빌드는 아슬아슬하게 움직이겠지만, 또 이미 큰 비용을 들여 제작해버린 멋진 컷씬은 게임에 들어맞지 않지만 버릴 수도 없으므로 게임을 여기 맞춰 바꿔야만 하지만, 모든 조직에서 사용할 툴이 미비한 나머지 기계가 1분이면 해결할 일을 인간 여러명이 밤을 세워 더 낮은 수준으로 해결하고 있지만 이런 상황은 가상의 고객이 알 필요도 없고 가상의 고객이 관심을 가질 이유도 없으므로 이미 가상 고객의 롤을 플레이하는 스탭들의 관심사로부터 멀어집니다.

완성

이제 걱정할 필요가 없습니다. 스탭들에게 이 기법 이름을 정확하게 알려주지는 않을 것입니다. '위협에 의한 자발적 강제노동기법'이라고 내 머릿속에는 기록해두겠지만 결코 누구에게도 이야기하지 않을 것입니다. 팀은 주인의식을 가지고 자발적으로 최선을 다해 일할 것이고 빌드는 언제 시연해도 아름다운 최상의 상태를 유지할 것입니다. 이렇게 멋진 게임이 출시 후 실제 고객들로부터 굉장한 악평을 들으며 순식간에 가라앉는다면 이건 개발팀의 잘못이지 그 바깥에 있는 그 누구의 잘못도 아닙니다. 만약 실패한다면 이 실패자들은 가만 놔두면 알아서들 사라질테니 골치아플 일도 없습니다. 이제 모든 것이 완성되었습니다. 이제 위협에 의한 자발적 강제노동기법을 습득하셨습니다. 이제 다음주부터 새로운 회사와 프로젝트를 시작하세요. 이제 게임 비즈니스에서 성공하실 수 있습니다. 진심을 담아 행운을 빕니다.

· 2020-02-15 16:01

cacti 사용기

결론: 기초적인 예외처리조차 부족한 수준낮은 소프트웨어. 시간낭비하지 마세요. 개발과정에 자동화된 테스트가 있는지 확인하고 사용하기 전에 포럼을 살펴보세요.

지난번에 호스팅 업체를 떠나 라이트세일로 이사히면서 깨닫게 된 점 중 하나는 이제부터 서버 모니터링을 내가 직접 해야 한다는 것이었습니다. 호스팅 업체를 사용할 때는 단 한번도 모니터링 비슷한 것에도 신경써본 적이 없었습니다. 서버는 항상 그냥 돌아갔고 자잘한 중단 사고에도 불구하고 제가 사용하는데는 아무런 문제가 없었습니다. 만약 서비스가 중단된다면 저보다 먼저 호스팅 업체에서 문제를 해결해줄 겁니다. 그런데 VPS6)서비스를 사용하기 시작하면서 이야기가 달라졌습니다. 만약 서비스가 중단되면 제가 다시 확인해보기 전까지는 아무도 알려주지 않았습니다. 같은 사양을 호스팅 업체를 통해 사용하는데 비해서 VPS 서비스가 훨씬 저렴한데는 아마도 이런 이유가 있었겠구나 싶었습니다.

서버 모니터링 방법을 찾아보니 가장 가까이에 클라우드워치라는 제품이 있었습니다. EC2만큼 훌륭하게 통합되어 동작하지는 않지만 라이트세일에도 어렵지 않게 연동할 수 있었고 기초적인 통계를 제공하고 각 지표들이 내가 설정한 임계치를 지날 때 지정한 방법으로 경고하도록 설정할 수 있었습니다. 같은 회사의 VPS서비스를 사용하고 있으니 일단 사용해보기 시작했습니다. 순조롭게 동작했지만 한달이 지나고 청구된 요금을 살펴보니 이건 뭔가 잘못됐다는 생각이 들었습니다. 라이트세일 사용요금은 크게 세 부분으로 나뉩니다. 인스턴스 자체의 사용료, 백업용 스냅샷의 스토리지 사용료, 그리고 트래픽 요금입니다. 지금은 한달에 10달러짜리 인스턴스 번들을 사용하고 있는데 인스턴스 요금 10달러와 백업 비용 3달러 정도를 예상했습니다만 여기에 클라우드워치의 모니터링비용이 7달러 가까이 추가되어 있었습니다.

클라우드워치 요금의 핵심은 매트릭 개수인데 처음 10개까지는 무료지만 그 다음부터는 매트릭 하나 당 0.3달러가 청구됩니다. 그런데 저는 매트릭을 20개 가량 사용하도록 설정하고 있었고 이걸로만 6달러가 추가로 청구된 겁니다. 거대한 비용은 아니지만 VPS 자체의 핵심비용이 10달러인 마당에 모니터링 비용이 그 절반을 초과하는 상황은 영 불편했습니다. 잠깐 고민하다가 아마존에 돈을 내며 빈털터리가 되는 대신 클라우드워치를 대신할 모니터링 방법을 찾아보기 시작했습니다.

이런 질문을 딱히 할만한 대상이 없었기에 구글에게 물어봤습니다. 웹서버 모니터링하는데 사람들이 사용하는 적당한 도구 하나를 선택할 생각이었는데 맨 먼저 그럴싸하게 보인 것은 cacti였습니다. 일단 꽤 오래전부터 개발중인 것 같았고 소스가 공개되어 있었으며 많은 사람들이 사용하고 포럼이 활성화된 것으로 보였습니다. 모니터링에 사용할 가장 작은 인스턴스 하나를 만들고 cacti를 설치했습니다. 설치과정이 썩 편안하지는 않았습니다. 이 도구는 크게 MySQL, SNMP, RRD라는 도구에 의존하고 있었는데 인스톨러가 bitnami LAMP 스택으로 만든 인스턴스에서 문제를 일으켰습니다. 한동안 설치 자체에 트러블슈팅을 시도하다가 우분투만 설치된 인스턴스를 다시 만들고 나서야 설치에 성공할 수 있었습니다.

cacti는 SNMP라는 소프트웨어를 통해 서버의 정보를 얻은 다음 이를 RRD라는 일종의 차량용 블랙박스 메모리 같은 방식으로 기록했다가 이 정보를 그래프로 그려주고 또 내가 설정한 임계점을 넘는 값을 경고해주는 역할을 합니다. 클라우드워치가 거의 아무런 의존성 없이 같은 동작을 했다면 cacti는 방금 이야기한 여러 다른 소프트웨어에 의존해 동작합니다. SNMP를 통해 서버 정보를 얻는 컨셉은 쉽게 이해할 수 있었지만 그걸 왜 RRD라는 이상한 형식으로 기록해야 하는지는 잘 이해할 수 없었습니다. 설명을 찾아보니 여러 산업용 소프트웨어가 장기간에 걸쳐 데이터를 기록할 때 용량이 무한정으로 증가하지 않도록 제한된 공간을 끝까지 사용하면 처음부터 최신 데이터를 기록하거나 오래된 데이터의 정확도를 낮춰 용량을 관리하는 도구처럼 보였는데 그 의도는 이해했지만 요즘처럼 스토리지 가격이 낮은 시대에 웹 모니터링 도구가 이런 데이터 기록 방식에 의존하는 점은 이해할 수 없었습니다. 게다가 이럴거면 MySQL 데이터베이스는 왜 사용하는 건지 이해하려고 잠깐 시도했습니다만 잘 되지 않았습니다.

cacti 사용은 8시간만에 실패로 끝났습니다. 8시간 동안 온갖 트러블슈팅에 시달려야만 했는데 8시간이 지나고나서도 제대로 된 첫 데이터를 얻는데 실패했습니다. 제 상황을 검색해보니 Why I Enthusiastically Switched from Cacti to Zabbix for System Monitoring 같은 글이 있었고 이 분의 경험 역시 저와 비슷했습니다. cacti 트러블슈팅을 중단한 가장 큰 계기는 자꾸 중단되는 코드를 열어 sizeof()strlen()으로 고치는 순간7)이었습니다. 이 거대한 코드 덩어리는 기초적인 수준의 예외처리도 없었고 많은 부분이 아슬아슬한 상태로 돌아가고 있었습니다. 하다못해 제가 한동안 사용하고 있는 도쿠위키는 커밋을 풀 할 때마다 주요 의존성 환경을 바꿔가며 테스트를 거칩니다. cacti는 온갖 환경에 의존성이 있었지만 아무런 테스트도 없어 보였고 PHP 버전이 달라지면 온갖 에러를 뱉어내며 정상 동작하지 않았습니다. 몇몇 코드를 고쳐 한참만에 처음으로 정상 동작하게 만들었지만 그 사이에 겪은 일들은 이 도구에 더이상 의존하다가는 혈압으로 곧 죽겠다 싶었고 인스턴스째로 삭제해버렸습니다.

교훈은 도구를 선택할 때 도구가 얼마나 오래됐는지, 또 얼마나 많은 사람들이 사용하는지, 소스에 접근 가능한지도 중요하지만 이 도구가 얼마나 안정적으로 동작하며 도구의 목적에 집중할 수 있게 해주는지 포럼을 좀 더 관찰해야 한다는 점입니다. 사실 포럼을 둘러볼 때는 대강 글이 어느 정도 빈도로 올라오고 글에 답변이 어느 정도로 되는지를 대강 살펴봤습니다. 하지만 정작 제거 문제를 겪는 상황에서 다시 찾은 포럼은 엄청나게 많은 문제가 쌓여 있을 뿐 각각의 문제들이 제대로 파악되어 수정되지는 않고 있었습니다. 또 워낙 문제가 많은 탓에 답변들은 약간 지쳐 보였고 도구의 핵심에 접근하기는 커녕 의존성의 바다에서 허우적거리게 만들었습니다. 가령 그래프가 안 그려지는 원인을 찾기 위해 RRD 파일을 열어 값이 정상적으로 기록됐는지 알아보고 MySQL 데이터베이스를 열어 RRD 파일에 연결된 정보가 정상적으로 기입되었는지, SNMP가 정상적으로 호출되는지 따위에 계속해서 신경써야 했습니다. 도구를 사용해보기 전에 포럼을 조금만 더 둘러봤으면 바로 뭔가 이상한 점을 발견하고 다른 도구를 시도했을텐데 아쉬웠습니다. 시간과 혈압 모두요. 얼마 동안 방황한 끝에 zabbix라는 모니터링 도구를 선택했고 지금은 평화로워졌습니다. 모니터링비용은 월 3.5달러로 고정됐고 클라우드워치를 사용하던 때보다 다양한 매트릭을 모니터링할 수 있게 됐고 cacti에 비해 모니터링이라는 목적 자체에만 집중할 수 있는 상태가 됐습니다.

· 2020-02-09 22:38

격리

결론: 시스템디자인문서는 핵심기능만 남겨야 합니다. 그 외 연관기능은 핵심과 잘 격리해서 별도로 개발해 하며 여기에 실패하면 협상력 약화, 유지보수 난이도 상승, 기능 미사용으로 인한 개발력 낭비 같은 문제가 생깁니다.

시스템디자인 문서를 검토하다 보면 종종 핵심기능 이외에 혹시나 필요할지도 모를, 하지만 실제로는 현재 필요 여부를 예측하기 어려운 부가기능이 함께 정의되어 있을 때가 있습니다. 가령 NPC가 다이얼로그박스를 통해 말하게 만드는 기능이 있다고 합시다. 퍼시스턴트월드에 있는 NPC와 인터랙션하거나 퀘스트에 의해 NPC와 인터랙션하면 이 NPC가 상황에 따라 적당한 대사를 다이얼로그박스를 통해 말합니다. 다이얼로그박스에는 NPC의 포트레이트와 NPC이름, 대사 정도가 표시될 겁니다. 여기에 다이얼로그박스를 터치 앤 홀드하고 있으면 대사가 빨리 넘어가고 구석에 있는 스킵 버튼을 터치하면 대사를 끝내고 다음 동작으로 진행합니다. 이 기능은 근미래에 퀘스트에 의해 호출될 예정이고 당장은 퀘스트가 없는 상태이므로 퍼시스턴트월드에서 NPC와 인터랙션할 때 이 NPC에게 연결된 다이얼로그박스를 보여주는 선에서 기능을 구현해놓으면 확장하기에 무리가 없을 거라고 예상했습니다.

이렇게 요청했던 기획서는 대사를 출력하며 동시에 지정된 음성파일을 재생하고 대사에 따라 NPC에게 애니메이션을 재생시키고 대사 중간에 퀘스트 보상을 지급하고 대사를 출력하는 도중에 NPC를 이동시키는 동작을 포함한 굉장한 물건으로 발전해 있었습니다. 이전에는 대략 목차 정도를 완성한 목차를 놓고 상담해 기능의 방향이 너무 틀어지지 않게 수정하곤 했습니다만 이번에는 신경을 쓰지 못했고 이 괴물같은 물건을 어떻게 해야 할지 고민에 빠졌습니다. 대사에 따라 음성파일을 재생하는 기능은 필요했습니다. 하지만 지금 당장은 어떤 사운드 솔루션을 사용할지 결정하지도 않았고 또 모바일플랫폼의 제약을 감안해 음성파일을 제공하지 않을 가능성도 있었습니다. 또 NPC가 대사를 하며 애니메이션을 재생하는 연출을 할 수도 있었지만 이 역시 결정을 예측하기 어려웠고 퀘스트 보상 지급은 종종 NPC와 대사를 하다 말고 보상을 지급하는 게임이 있기는 하지만 대사를 통해 제어될 대상이 아니었습니다.

일단 음성 기능과 NPC애니메이션과 이동을 포함한 연출기능, 퀘스트 보상 기능을 제거하고 텍스트 대사를 뿌리고 언리얼엔진의 기본기능을 사용한 제한적인 리치텍스트와 빨리감기, 스킵 정도를 남기고 나머지 요구사항을 모두 제거했습니다. 그나마 삭제한 코드를 주석처리하는 것 마냥 나중에 쓸 지도 모르기 때문에 텍스트를 옅은 회색으로 만들어 문서 구석에 남겨두려는 시도를 거절하고 현재 버전을 커밋하고 필요하지 않은 내용을 모두 삭제하게 했습니다. 이제 문서에는 대사를 표시하고 스킵하거나 빨리감는 기능 외에는 아무것도 남지 않았습니다. 이 기능은 퀘스트에 의해 사용되기 전까지 퍼시스턴트월드에 배치된 NPC를 터치하면 지정된 대사를 표시하는 수준으로 구현되어 얼마간 대기하게 될 겁니다.

당장 필요하지 않은 기능을 요구사항에 포함하지 않도록 강력하게 제한하는 이유는 우리가 숙련된 소프트웨어 설계자가 아니고 또 우리는 미래를 예측하는데 아주 서툴기 때문입니다. 먼저 게임 개발팀에서 시스템디자이너는 소프트웨어 요구사항을 정의하는 일종의 설계자 역할을 합니다. 내부 고객을 인터뷰해서 요구사항을 정리하고 개발을 진행합니다. 정의되지 않은 동작을 결정하고 시시각각 바뀌는 리퍼런스 게임의 비즈니스모델이나 최상위 의사결정권자의 요구사항을 수용할 수 있어야 합니다. 이런 요구사항 변경에 유연하게 대응하는 가장 기본적인 방법은 최소한의 기능만 정의하는 것입니다. 사실 모바일게임에서 요구하는 기능의 대부분은 고객 관점에서 그리 복잡하지 않습니다. 예를 든 대사 기능은 단순히 포트레이트와 텍스트를 표시하고 그 동안 플레이어캐릭터의 상태변화를 약간 제한하는 정도면 필요한 기능 대부분을 충족합니다. 여기서 미래를 예측하려고 시도하면 위에서 이야기한 음성, 연출, 보상 같은 눈에 보이는 기능을 엉뚱한 장소에 붙이려는 이상한 요구사항을 작성하게 됩니다.

종종 개발 리소스 사용 우선순위가 잘 돌아오지 않는 개발관리가 붕괴한 조직에서 오랫동안 일한 적이 있는 분들로부터 이런 성향이 강하게 나타나기도 합니다. 지금 당장 요구받은 핵심기능에 자신이 그동안 절실히 필요했던 핵심과는 거리가 있는 온갖 기능을 밀어넣어 이 기회를 최대한 활용해야겠다고 생각하는 겁니다. 당연히 엔지니어는 이 이상한 기능 집합에 의문을 가지고 구현 협상력이 약해지며 만약 이렇게 구현된다 하더라도 실제로 각각의 기능을 잘 사용하지 않고 유지보수를 어렵게 만듭니다. 이 상황을 해결할 방법은 붕괴된 개발관리체계를 회복하는 겁니다. 각각의 디자이너가 자신에게 필요한 기능을 최대한 밀어넣는 것이 아니고요.

이런 요령을 '격리'라고 말하고 있습니다. 요구사항에는 핵심기능만 간결하게 정의해서 엔지니어를 통해 개발을 진행시키고 위에서 이야기한 자신이 필요하다고 생각하는 추가기능과 미래를 예측한 결과에 따른 기능은 핵심기능과 격리해서 별도의 요구사항을 통해 전달해야 합니다.

· 2020-02-12 20:25

서피스 고 필기 1년후

결론: 서피스 고 필기는 1년 전에 비해 그다지 개선되지 않았습니다. 필기하려면 서피스 프로를 사세요.

1년 전에 서피스 고를 사용하기 시작했습니다. 그때 얼마동안 서피스 프로에 몇 년 동안 필기해온 습관 그대로 필기하려고 시도했고 생각대로 잘 되지 않았습니다. 흔히 '갈고리 현상'과 '지터'문제가 뚜렷하게 나타났고 서피스 프로를 사용하던 습관 그대로 필기했다가는 혈압이 올라 목 뒤가 뻣뻣해질 지경이었습니다. 그 후에는 서피스 프로가 계속해서 거의 모든 필기를 담당했습니다. 서피스 고는 어쩔 수 없을 때에 한해 간단한 드로잉과 필기를 담당했는데 언제나 신통치 않았습니다. 대대로 마이크로소프트는 하드웨어를 내놓고 꽤 오랜 기간에 걸쳐 소프트웨어를 통해 문제를 해결해 왔고 혹시 서피스 고도 비슷한 선례를 따르지 않을까 은근히 기대해 왔습니다. 이제 1년이 지났고 현재 상황을 짧게 정리해 둘 작정입니다.

네. 지난 1년이 흐르는 사이에 지터 문제는 거의 사라졌습니다. 어지간히 빨리 글씨를 써도 획이 끊기지는 않습니다. 하지만 갈고리현상은 거의 해결되지 않았습니다. 획 긋기를 멈추려고 펜을 들어올려도 내가 예상한 지점에서 획이 멈추지 않습니다. 그래서 이미 펜을 들어올리고 다음 글자로 이동하는 동안에도 획이 그려져 획 끝이 갈고리처럼 휘어집니다. 글씨를 빨리 쓰려고 하면 갈고리현상은 더 심해집니다. 획은 점점 더 받침처럼 보이고 빽빽한 필기를 읽기 어렵게 만듭니다. 또 갈고리들은 원노트 페이지를 백터 기반의 PDF 파일로 만들 때 파일 크기를 2배 가까이 크게 만들어 공유하기 어렵게 만듭니다.

마이크로소프트가 앞으로 기 기계를 업데이트한 하드웨어를 내놓을지, 소프트웨어를 더 업데이트해서 이 현상을 개선할지 정보는 없습니다만 1년이 지난 지금 상태로는 여전히 편안하게 필기하기 어렵습니다. 작년과 같은 결론입니다. 원노트에 필기를 적극적으로 할 계획이라면 '서피스 고'로는 안됩니다. '서피스 프로'를 사세요.

<< 새 항목 | 오래된 항목 >>

blog/start.txt · 마지막으로 수정됨: 2020-01-14 20:52 저자 neoocean