처음 입사를 했을때는 컬러LCD가 막 나오기 시작하고, 최초 카메라폰이 나온지 얼마 안됐을 무렵 정도였던 것 같다. 신입시절에 개발에 참여했던 SPH-E2000 모델의 경우엔 200 MB 가량의 3500 여개 파일로 구성되었었다. 당시에 사용하던 노트북으로 컴파일하는데 약 30 분 정도가 걸렸던 것으로 기억한다.

그러던 것이 점차 소스의 크기가 방대해지고, 기능이 이것저것 많이 들어가고, 이미지나 사운드 데이터 또한 커지다보니 소스의 양도 점차 많아지더니, 최근의 노멀폰들은 3.6 GB 가량의 33,000 여개 파일과 5200 여개의 폴더로 구성되기에 이르렀다.

그런데 스마트폰으로 오게 되니, 차원이 달라졌다. 예를 들어, 안드로이드 폰의 경우에는 어플리케이션이 동작하는 AP와 통신을 담당하는 CP로 나뉘게 되는데, 별개의 OS로 돌아가다보니 컴퓨터가 2대인 셈이나 마찬가지다.
뿐만 아니라, AP 쪽의 경우에는 리눅스를 기본OS로 하고, 그 위에서 Dalvik이라고 하는 가상머신을 구동시키고, 그 위에 안드로이드 어플리케이션이 구동된다. 그러니 덩치가 클 수 밖에 없는 것이다.
안드로이드 프로요(Froyo)로 구성된 소스의 경우엔 16만개가 넘는다. 물론 CP를 어떤 것을 쓰느냐에 따라, 해당 칩 제조사에서 제공하는 구동 OS에 의해 좌우되는 정도가 있긴 하지만 말이다.

이렇다보니, 문제가 발생했을 때 원인을 찾는 것도 쉽지 않은 경우가 많다. 원인을 찾았어도 또 다른 문제가 발생되지 않게 최적화하여 수정을 하려면 고민에 고민을 거쳐야 하기 때문이다. 물론 파일의 갯수가 많아진 것은 그만큼 계층화와 모듈화가 잘 되었기 때문이라고도 할 수 있다. 그래서 어쩌면 자신이 맡은 부분에 대해서만 본다면 쉬울 것 같다고 생각될지도 모른다.

현실은 그렇지 않다는 것이 문제다. 어플리케이션만 만든다면 괜찮겠지만, 하드웨어 초기셋업부터 UI까지 신경써야 하는 입장에서는 무엇하나 빠뜨릴 수가 없다. 그렇다보니 소스의 어떤 부분을 찾으려면 그 많은 파일을 검색해야하니 시간이 오래걸리고, 힘이 들 수 밖에 없다. 정말이지 데스크탑이 아니라 아예 워크스테이션으로 작업해야할까보다.
Posted by 찬이

댓글을 달아 주세요