3개월간 회사를 다니면서 배운 내용

이선협
Sunhyoup’s Story
Published in
5 min readJul 12, 2014

--

http://blog.outsider.ne.kr/1067

위 글을 보고 나서 학교를 휴학한 후 회사에서 배운 내용을 정리하기로 마음먹었다. 이미 3개월이라는 긴 시간이 지났기 때문에 지난날에 있었던 모든 일을 개발 일지처럼 정리하는 것보다 큰 단위로 무엇을 고민했고, 고민을 해결하기 위해 공부한 내용과 그 결과가 어떻게 다가왔는지 이번 포스팅으로 정리한 후 앞으로 일주일 단위로 개발일지를 쓰기로 하였다.

고민한 내용

회사 입사 후 시간 순으로 고민한 내용을 나열하면 다음과 같다.

1. 확장이 힘든 서버 코드
2. cafe24로 서비스 되고 있는 서버를 AWS로 확장 가능하게 이전
3. 정규화되지 않은 DB
4. 분실된 안드로이드, iOS 릴리즈 소스에 맞춰서 현재 가지고 있는 소스를 수정하기
5. 통계 기능
6. 외부업체와 연동하는 신규 프로젝트 진행

위 고민에 대한 내용을 글로 적다보니 너무 길어졌기 때문에 간단하게 요약하여 적어보자면

  1. 언어는 PHP이지만 CakePHP, CodeIgniter와 같은 프레임워크 사용안하고 REST API로 제작되지 않음.
  2. Apache, PHP, MySQL이 모두 한 서버에 구축되어 있어서 사용자 수가 많아지면 문제가 생길 가능성이 높음. 스케일 아웃이 불가능하고 스케일 업만 가능. 특히 DB나 파일에 대한 Failover가 불가능하다.
  3. 테이블간 컬럼이 중복되거나 한 컬럼에서 ‘,’ 혹은 ‘|’같은 특수 문자로 데이터를 분리하는 등 정규화가 이뤄지지 않은 문제가 있음. 입사 당시에는 외래키에 대한 인덱스가 걸려지있지 않아 성능도 느렸음.
  4. 지금 제작된 제품은 외주 업체에서 제작된 제품인데 현재 릴리즈된 버전의 소스를 외주 업체에서 분실하여 그 이후에 레이아웃이 변경된 소스만 남아있음. 이 소스를 수정해서 현재 레이아웃으로 변경하고 버그도 수정해야함.
  5. 릴리즈된 제품은 통계와 같은 기능이 없어서 GA(Google Analytics)를 붙이거나 수집된 데이터를 시각화하는 기능 제작해야함.
  6. 네비게이션 업체 혹은 장소 제공 업체와 연동하는 모바일 웹페이지 제작.

전부 정말 만만치 않은 일들이었다. 처음에는 이미 나온 제품이 있어서 간간히 버그 수정만 하면 되는 줄 알았는데 거의 한 달은 야근 + 주말 근무를 계속해서 했다. 물론 지금은 모든 이슈가 해결되서 여유롭게 다니고 있다.

해결 방법과 공부한 내용

각 문제에 대한 해결 방법과 그 해결 방법을 위해 공부한 내용을 정리하자면 다음과 같다.

  1. 확장이 힘든 서버 코드, 정규화되지 않은 DB
    이 문제들을 해결하기 위해서는 이미 서비스되고 있는 시점에서 많은 수의 코드와 이미 많은 데이터가 들어가있는 DB를 수정하기에는 비효율 적이기 때문에 외부업체와 연동하는 신규 프로젝트를 마친 후 새롭게 개발하기로 하였다.(가능하지만 아직 사용자가 많지 않은 시점에서 확장 가능하도록 빠르게 개발하는 편이 좋다고 생각했다)
  2. cafe24로 서비스 되고 있는 서버를 AWS로 확장 가능하게 이전
    우선 안정적으로 이전하기 위해서 AWS를 확실히 공부할 필요가 있었기에 아마존 웹 서비스 클라우드 디자인 패턴 구축 가이드라는 책을 사서 읽었다. 그 후 과정을 설명하자면 cafe24에 있던 DB 데이터를 AWS RDS로 이전한 후 코드에서 AWS RDS로 접속하도록 수정하였다. 그 후에 EC2 인스턴스를 신규 프로젝트 용, 기존 서버 용으로 생성하여 git으로 배포한 후 네임 서버를 AWS Route53으로 연결되도록 수정하였다. 설명은 간단하지만 이 과정에서 문제가 생길까봐 상당히 무서웠다.
  3. 분실된 안드로이드, iOS 릴리즈 소스에 맞춰서 현재 가지고 있는 소스를 수정하기
    이 부분은 현재 진행 중인데 학교 친구인 조성환을 꼬셔서 안드로이드 부분을 수정하고 내가 iOS 부분을 수정하고 있다. 이 과정에서 느낀 점은 역시 문서화와 아키텍처가 중요하다는 점이었다.
  4. 통계 기능
    안드로이드와 iOS 업데이트는 아직 현재 진행 중이기 때문에 이전에는 야매로 API 서버에 GA를 붙였다. 사실 야매로 붙였기 때문에 정확한 통계가 나오지는 않지만 접속량을 볼 수 는 있다. 그 외에 결제량과 유저 가입수는 DB의 데이터를 뽑아서 dimplejs 라이브러리를 이용하여 시각화 하였다.
  5. 외부업체와 연동하는 신규 프로젝트 진행
    사실 이 작업을 하면서 가장 많이 공부했다. 과감하게 공부해보지 못한 프레임워크도 사용하였다. 프로젝트를 진행하면서 처음으로 Angularjs를 공부했고 어설프게 알았던 javascript를 좀 더 깊게 공부했다.

그 외에 배운 내용

회사에서는 오로지 소프트웨어 개발 관련되서만 배우지는 않았다. 오히려 회사 업무와 관련된 내용을 더 많이 배웠다.

  1. 이메일, 전화 업무
    예전에도 회사를 다녀본 적은 있지만 이렇게 본격적으로 회사 업무를 해본 것은 처음이기 때문에 외부 업체에 이메일을 보내거나 전화를 하는 일이 많아졌다. 이메일을 보낼 때는 메일을 받는 당사자 뿐만 아닌 관계된 사람들을 참조에 넣는 등 기본적인 것도 몰랐기 때문에 많은 도움이 됬다. 특히 전화는 상당히 부담감이 심했기 때문에 처음에 상당히 전화 업무에는 거부감이 들었는데 여러 차례 적응을 하다보니 조리있게 말하는 법을 배웠다.
  2. 외부 업체와 미팅
    사실 이 부분은 배웠다기 보다는 경험이라고 생각된다. 전화 업무와 마찬가지로 모르는 사람들과 미팅하는 것도 조금 거부감이 있었기에 적응하기 어려웠다. 지금은 많이 적응되어서 미팅에 대해 거부감은 없다.

사실 하고 싶은 말은 더 많지만 지난 3개월간 너무 많은 일이 있었던 것도 그렇지만 글을 잘 못쓰기에 표현을 제대로 못한 점이 더 큰 것 같다. 앞으로 일주일에 한 번 씩 개발일지를 적어서 글 쓰는 법을 연습해야겠다.

--

--