코딩하는 오징어
스마일게이트 서버개발캠프3기 후기 본문
# 서버개발캠프 3기
1월2일 ~ 2월23일 8주 동안 스마일게이트에서 진행하는 서버개발캠프3기로 참여하여 개발을 신나게 하고 왔습니다.
사실 면접을 보고난 뒤에 떨어질 줄 알고 너무 아쉬웠는데 합격 메일을 받고나서 세상을 다 가진것만 같아서 기말 던졌습니다. ㅎㅎ
저는 백엔드개발자가 되고 싶어서 mash up이라는 동아리에서 프로젝트도 하며 여러 공부를 진행하고 있었지만 여전히 조금은 막막했습니다. 내가 개발자가 될 수 있을까라는 의심도 많이했습니다.. 하지만! 서버개발캠프에 참여하여 두달이 지난 후 저는 그냥 개발자가 되어있었습니다. 학교에서나 동아리에서 진행하는 프로젝트에서 고려해보지 못한 Scale Out과 무정지서비스라던지 서버 아키텍처등을 세미나를 통해 배우고 이것을 진행하는 프로젝트에 적용하고 현업에서 쓰이는 여러 오픈소스 기술들을 이용하면서 많은 것을 얻었습니다.
그럼 제가 서버개발캠프에서 공부하며 적용 해본것들과 느낀점들을 정리 해보겠습니다.
## Scale Out & 무정지 서비스
보통 학생들끼리 프로젝트를 진행할 때 Scale out따위는 고려하지않죠. 서비스를 출시 해서 성공 했을 경우, 서비스 이용자수가 급격히 증가할 경우 우리가 만든 서버는 바로 터져버릴 것입니다. 물론 aws에서 ec2를 빌려서 했을 경우 aws가 알아서 처리해 줄 수도 있습니다. 하지만 우리는 개발자니까 적어도 aws가 없어도 처리를 해줄수 있어야겠죠??!! 그리고 만약 기능이 추가되어 서버를 재빌드 해야할 경우 우리의 서비스는 빌드하는 동안 정지해 있습니다. 잠깐일수도있지만 이용자들은 개빡쳐서 어플을 삭제할 수 도있습니다.이럴 경우 load balance는 어떻게 해줄 것이며 서비스의 아키텍쳐는 어떻게 설계하여야 하는지에대해 얻게 되었습니다.
## 협업
아 이부분은 제가 조금 아쉽게 생각 했던 부분입니다. 제가 속해있는 팀은 백엔드로 커리어를 결정한 사람이 없어서 혼자 했기 때문이죠.. 물론 그렇다고해서 협업을 안하진 않았습니다. 클라이언트 개발자와 꾸준히 소통을하며 프로젝트를 위해 꾸준히 회의를 하며 프로세스가 어떻게 돌아가는지 배우게 되었습니다. 다만.. 저는 브랜치를 여러개로 나눠 머지하는 모세의 기적을 느껴보고 싶었는데.. 물론 혼자서 그냥 기능별로 브랜치따서 개발하고 다시 머지하면 되지만 다른 사람과 함께 해보고 싶었습니다만.. 다른 팀들은 백엔드개발자들이 넘쳐났는데 ㅠㅠ조금 아쉬웠지만 협업에 대한 서비스도 끊임없이 세미나를 해주셨기 때문에 에러코드는 어떻게 맞춰야하고 하나의 프로젝트는 어떻게 진행이 되어야하는지 여러가지 개발방법론에 대해 공부하게 되었습니다.
## CI & CD (Continuous Integrate & Continuous Delievery)
개발이된 서버는 당연히 배포를 해주어야겠죠?? 그리고 지속적으로 관리를 해주어야합니다. api가 추가 될 때마다 ssh로 서버에 접속해서(서버는 리눅스환경이 대부분이니까요) git에 push된 부분을 다시 pull받아서 재실행하는게 서버가 하나라면 문제가 없지만 서버가 기능별로 물리적으로 나누어져 있다면 아 벌써부터 혈액순환이 안되네요... 저는 이 부분에도 관심이 많아서 jenkins를 이용하여 배포를 자동화 시켰습니다. jenkins에 강력한 기능들을 다 적용해 보진 못했지만 새로운 세상이 펼쳐 졌습니다.
## Redis
이번 프로젝트에서 저는 Redis의 여러 강력한 기능들을 사용하였습니다. 실시간으로 랭킹을 보여주기위해 Redis의 ZSET구조를 이용하였고, 세션 토큰관리는 Key Value를 이용하고 매칭된 게임룸에대한 정보를 hash구조를 이용하였죠. 또 web socket서버를 클러스터링 하기위해 pub/sub을 이용하기도 하였습니다. pub/sub기능은 정말 흥미러웠습니다. 서버의 이벤트를 redis에보낸 후 redis를 구독하고있는 모든 서버는 이 이벤트를 받아가는 광경을 보면서 오줌쌌습니다. 이용해보면 그닥 어려운 기술은 아니지만 모르면 좀 웹소켓서버는 scale out을 고려하기 힘들겠죠..?
## 그 외의 기술들
위에 목록외에도 많은 것들을 어깨너머로 보고 배웠습니다. 동기들이 다들 너무 좋은 사람들만 있어서 자신들의 팀에서 공부해서 적용한 것들을 공유하고 가르쳐주고 가르침을 받으면서 다같이 성장 하였습니다. 스마일게이트가 사람을 정말 잘 보는 거같다는 생각이 들정도로 모든 사람들이 열정적이고 훌륭한 분들이었습니다. Docker를 적용한 팀들은 docker를 알려주고 ngrinder로 성능을 테스트 한 팀은 ngrinder를 알려주고 (저는 jenkins를 옆 팀에게 공유 하였습니다. 속닥속닥) 정이 넘치는 뜨거운 공간이었습니다.
## 개발자로서의 성장
마지막으로 제가 이번 서버개발캠프에서 얻은 아주 큰 재산입니다. 신입으로 개발직군으로 가기위해서 자소서를 어떻게 써야하는지 포트폴리오는 어떤식으로 준비해야하는지 어떤 기술들과 어떤 기본을 쌓아야 하는지에대해 배웠습니다. 이거는 개꿀팁이니까 안알려줄거고 서버개발캠프4기에 참여해서 배워가세요^^
## 느낀 점
조금은 막막했던 저의 길을 불도저로 밀어서 길을 만들어준 스마일게이트의 서버개발캠프를 마친 후 자신감이 생겼습니다. 무엇을 공부해야하는지 명확해졌고 코딩에 더 큰 재미를 느끼게 되었습니다. 위에서 나열한 부분들 말고도 배운 것들이 너무나도 많았고 이 두달이 저의 인생의 전환점이 될 것같습니다. 또 졸업예정인 분들이나 한 학기만 남은 분들은 취업연계까지 가능하니까 이 보다 더 좋을 수는 없죠??!(저는 아직 1년이 남아서 학교로 돌아가지만..) 글 솜씨가 부족해서 제 글을 보고 구미가 안땡길수도 있지만 채용형 인턴이 아니라면 인턴 할 바에 이거 지원하세요. 이름만 서버개발캠프지 인턴입니다. 월급도 줘, 교육도 시켜줘, 밥도 줘, 회식비 지원해 줘, 간식도 무제한으로 줘, 컴퓨터도 제공해줘, 인사 면담도 해줘 부모님인줄 알았습니다. 제 it인생에서 큰 도약이 아닐까 생각합니다 ㅎㅎ. 이만 글 마무리 짓도록 하겠습니다. 여러분 스마일게이트 서버개발캠프4기 공지 뜨면 바로 지원하세요. 여러분 인생의 길을 뚫어주는 불도저입니다.
'My Diary' 카테고리의 다른 글
2021년 목표 정리 (0) | 2021.02.07 |
---|---|
2020년 회고록 (3) | 2021.01.03 |
2020년 해야할 일들 (0) | 2020.01.01 |
2019년 회고록 (1) | 2019.12.29 |
신입 백엔드 개발자가 되기까지의 여정 (73) | 2018.07.07 |