Samsung CNCT의 개발환경 문화 소개

안녕하세요? 최근 연구소에서 개발 센터로 둥지를 옮긴 개발혁신팀 Devops Lab의 김광영 프로라고 합니다. 저는 CICD 셀에서 배포툴을 개발하던 중 Global Exchange Program(이하 GEP)에 선발되어 현재 미국 Seattle의 Cloud Native Computing Team(이하 CNCT)에서 K2(Kraken2) https://github.com/samsung-cnct/k2 - (Kraken2) 라는 오픈소스 프로젝트 개발에 참여하고 있습니다.

저는 Devops 에 관련된 협업툴과 개발 문화에 관심이 많고 동시에 Docker와 Kubernetes 기반의 배포에 관심이 많아 이 프로젝트로 GEP를 지원하게 되었는데요, 사실 현지에서 개발에 관련된 기술들로만 해도 모르는 게 너무 많아서 따라가기 벅차지만 CNCT의 개발문화는 우리에게 많은 점을 시사해준다고 생각이 들어서 자세하게 소개를 해보려고 합니다.(고쳐쓰고 또 고쳐쓰다보니 꽤 오랜 시간을 투자하게 되었습니다^^;;)

원래는 CNCT에서 사용하고 있는 툴과 이곳에서 통용적으로(?) 퍼져 있는 애자일 개발 문화에 대해서 따로 따로 이야기를 하려고 하였으나 이 둘을 때놓고 설명하는게 어려울 정도로 개발문화와 툴이 밀접하게 연관되어 있다고 생각이 되서 길지만 한번에 (의식과 시간의 흐름에 따라…)이야기를 해보려고 합니다.(사실은 하고 싶은 이야기는 너무나 많은데 이것을 다 일일이 구분해서 설명을 하는게 너무 힘들기도 합니다. 툴 하나씩만 뜯어서 이야기를 해도 포스팅 하나가 끝나버릴수도 있구요. 따로 툴들이나 개발 프로세스에 대해서 조사를 하지도 않았고 현지에서 체험한 경험을 가지고만 이야기를 써 보았습니다. ㄱ떡같이 이야기해도 찰떡같이 알아든는 우리 동료분들을 믿습니다!). 대외비라고 생각되는 모든 자료나 내용은 아예 포함시키지 않아서 깃헙 페이지에서도 동시에 연재중입니다. 본문부터는 반말로 이야기가 진행되니 주의하세요!

+1) Devops랩이 연구소에 있었던 시절에 사업부 톡에 올렸던 어려웠던 험난했던 입국기와 미트업에 참여했던 이야기와 산호세 사무실을 방문했던 이야기는 다음의 링크로 연구소 사업부 톡해서 보시면 좋을 것 같습니다.



Samsung CNCT의 개발 툴 및 문화 소개 - 오늘은 집에서 일 할께요. 날이 좋아서


오늘은 집에서 일 할께요. 날이 좋지 않아서.

weatherisfine

이유없이 공유짤을 넣어보았다. 안구정화를 하고 시작하자.

오늘은 대망의 출근 첫 날. 하지만 오늘은 집에서 원격으로 근무를 하기로 했다. 오늘은 바로 May Day - 노동절 - 퍼레이드 있는 날이기 떄문이다. 많은 도로를 봉쇄하고 시위를 할꺼라고 하고 일부 과격한 폭력을 행사하는 시위대도 있기 때문에 Richard는 ( CNCT를 이끄는 Senior Vice President - 전무님 입니다. 전무님이랑 말 트는 사이 (영어로) ^^) 세이프티 퍼스트! 를 외치며 가능하다면 다 집에서 일을 하라고 공지를 해주었다. 그래서 첫 출근 부터 집에서….(이게 가능한 문화 자체가 일단 놀라웠다.) 사실 샌프란시스코에서 주말을 쉬다가 월요일에 원격근무까지 끝내고 시애틀로 오기로 했으나 숙소에서 키 수령이 8시 이후에만 가능하다고 하는 점과 시위로 인한 도로 봉쇄때문에 시간안에 숙소로 오지 못해 키 수령을 못하면 그냥 밖에 나 앉아야 하는 상황이 벌어지기 때문에 그냥 시애틀에 와버림….(샌프란시스코 바바이 ㅜㅜ 시간이 없어서 금문교도 못보고 떠나옴…)

protesters

숙소 바로 앞을 지나가던 시위대. 다행히 폭력사태는 일어나지 않았다고…

오늘은 회사에서 일 할께요. 날이 좋아서.

그렇게 나는 5월 2일 화요일에야 Smith tower의 사무실에 출근을 할 수 있엇다. 그런데 애초에 집에서 일을 하는 동료들이 있다. East Coaster들인 Liah 나 Michael Venezia 와 Michael Nelson 이 그런 친구들인데 ( 완전히 원격 근무를 하는 건은 아니고 일정기간 안에 사무실에 나와서 정해진 기간 만큼은 일해야한다. 반년에 1~2주 정도라고 한다. 정확한 건 Richard에게 물어보는게 빠를듯..) CNCT의 팀원들은 기본적으로 원격으로 일하는 것에 대한 것에 거부감도 없고 매우 익숙해져 있는 것 처럼 보인다.

그도 그럴것이 모든 툴들이 네트워크로 외부에서 접근이 가능하고 다양한 툴들로 바로 옆에서 일하는 것과 거의 비슷한 커뮤니케이션을 하고 있었다.(이에 대해서는 아래쪽에서 자세히 공유를 하도록 할 예정!) code of conduct(행동규칙?)이 명료하게 (아주 간단하지는 않다) 컨플루언스를 통해서 공유가 되고 있었고 새롭게 일을 하기 시작하는 모든 개발자는 동일한 티켓(이슈를) 받고 그 행동규칙에 따라서 일을 시작하도록 하고 있다. 이 모든것들이 다 체계화된 문서로 제공이 되니 인턴쉽이나 글로벌 익스체인지 프로그램 등으로 팀 멤버가 수시로 바뀌는 상황에서도 일에 집중력이 떨어지지 않도록 잘 관리가 되고 있었다. 그리고 매번 Grooming(스프린트 회고와 비슷하다.) 스프린트 플래닝과 백로그 디스커션 혹은을 통해서 우선순위가 높은 이슈들부터 차례 차례 해결을 해나가고 있었다.

몸이 아프다던지, 치과를 가야한다던지, 아이를 봐야한다던지, 새로운 인력의 인터뷰를 한다던지 혹은 회부에서 고객들과의 회의가 있다면 미리 알리고(보통 Slack에 공지를 한다) 또 개인적인 용무가 있다던지 하면 원격근무를 한다. 특별한 이유가 없더라도 본인이 원하면 언제든지 원격근무가 가능하다.

workstation

드디어 만난 나의 책상. 다시는 PC로 못 돌아갈 것 같다. 맥은 아름다운 개발 장비이다. 지금은 FHD 와이드 스크린 모니터을 대신해서 32인치 4K 모니터를 쓰는중.( 너무 쓰기 좋아서 사비로 하나 살까 고민이 되기 시작…윈도우즈PC와의 조합은 어떤지 잘 모르겠지만.)



찬란했다. 우리와 함께 한 그 모든 Tool 들이

1. Slack - https://slack.com 기존의 메신저와는 다른 사용자 경험을 제공하는 킴 커뮤니케이션툴.

다들 아시겠지만 아직도 이게 뭔지 모르는 분들을 위해서 위에 링크를 연결해 두었다. 당연히(?!) 대외망으로 다 열려있으며 slack에 기업계정으로 일정 비용을 지불하면서 사용하고 있다. 모바일도 되고 웹도 되고 깃헙과 지라와 이슈가 처리되는 과정이나 PR(Pull Request 혹은 Merge Request) 요청이나 결과까지 다 슬랙에서 확인이 가능하다. (플러그인을 통해서 ) 슬렉에서 대화를 하다가 바로 zoom으로 화상 회의실을 열어서 회의도 가능하다. 기본적으로 cnct의 모든 멤버가 다 있는 채널이 여러개가 있다. 거의 모든 이슈에 대한 논의는 여기서 이루어 지고 있고 히스토리가 남으며 시간이 지나도 검색이 가능하다. (2주가 지나도 지워지고 그러지 않는다..^^) 그리고 주제별로 대화를 묶을 수 있는 기능인 ‘Thread’ 를 제공하는데 여러가지 이슈가 동시에 한 채널에서 이야기가 이루어 질 때 해당 대화 채널이 혼란스러워 지는것을 방지하고 나중에 검색을 통해서 같은 이슈에 대해서 반복적으로 시간을 낭비하는 것을 줄일 수 있다.

기존과 다른 방식으로 일하는게 가능한 것은 slack 이라는 강력한 팀 커뮤니케이션툴이 있기 때문이라고 생각한다. 모든 커뮤니케이션의 시발점이 되는 것이 slack이고 이 툴을 중심으로 모든 툴들이 이어져 있다.

slack

맥용 slack어플리케이션을 캡춰한 화면. 대화창에서 소스코드를 위와 같이 꾸밀 수도 있고 다른 사용자를 멘션하거나 thread를 만들거나 zoom 화상 채팅을 만든다던지 슬랙봇을 이용한다던지 다양한 활용이 가능하다.

thread

thread를 검색하는 화면. 이 thread에서는 Kraken2에 부제를 다는 농담 따먹기중…

CNCT의 Slack Channels 소개.
  • cnct-samsung-it - 회사에 IT 관련 이야기를 하는 채널인듯하다. 새로운 맥북 출시 이야기라던지 4K 모니터에 대한 감상같은 이야기부터 스타트업들의 다양한 뉴스나 관련 비지스의 흥미로운 뉴스들을 공유한다. 녹스 포탈로 결재를 태우거나 하는 프로세스에 대한 질문이나 새로 받은 회사 핸드폰인 갤럭시 S8에 어떻게 녹스 포탈, 메신저를 어떻게 설치해야하는지 또 어떻게 하면 오픈플레이스로 법인카드 비용을 사용할 수 있는지 서로 가이드 해주기도 한다.

  • gereral - 뭔가 특별한 이벤트가 있거나 IT 산업중에 흥미있는 뉴스, 이슈에 대한 이야기를 한다. 아무래도 영어가 모국어인 사람이 들이다 보니 그냥 영어를 직설적으로 표현을 하기보다는 농담을 많이들 하는데 은유나 비유를 하기 시작하면 알아듣기가 어려워진다.

  • random - 말 그대로 랜던 채팅 채널. 여기에는 좀 더 팀원들의 개인생활들을 엿 볼 수 있다. 취미생활이라던지 가족들 사진이라던지 여러가지 잡다한 것들을 공유하는 채널.

  • office-seattle - 근태나 공지등에 이용한다. 집에서 일하게 되는 경우에 여기다가 많이 알린다. 뭐 간식이 새로 왔다던지 건물 지하에 새로 생긴 피트니스 센터가 어땠는지 후기를 남기기도 하는 잡다한 내용들도 오고 간다.

  • team-tooltime - common tool을 개발하는 팀의 채널인데 개발하면서 부딪히는 모든 문제에 대한 질문이나 논의 사항을 여기서 이야기를 한다.(오프라인 회의를 하지 않는 이상) 티켓(이슈)나 중요한 내용에 대한 메시징은 왠만해서는 다 슬렉으로 이루어진다. 다시 한번 말하지만 대화가 지워지지 않고 그대로 서버에 남아있기 때문에 질문을 검색하면 이미 다른 사람이 했던 똑같은 질문들을 그대로 찾아서 어떻게 문제를 해결했는지 확인이 가능하며 의사결정을 왜 이렇게 했는지에 대한 기록등도 남아있어서 프로젝트가 어떻게 진행되고 발전되어 왔는지 이해하는데 매우 도움이 된다. 구글 검색을 하기도 하지만 여기서 바로 서로 질문을 많이하는데 거의 즉각적으로 응답이 와서 블락커(티켓이나 이슈를 해결하는데 방해가 되는 걸 이렇게 부른다.)를 없애는데 시간을 많이 단축시켜준다. 나는 적어도 일하는 시간의 20% 이상을 이 팀 채널의 대화를 읽는데 사용한다. 팀에서 어떤 티켓들이 만들어지고 처리도며 어떻게 의사결정을 되는지 이해를 하기 위해서 여기서 이루어지는 모든 대화를 읽고 있다.

2. zoom - 시간과 장소에 구애받지 않는 회의를 가능하게 하다.

요즘 실리콘 밸리에서 핫한 비디오 컨퍼런스 툴이다. 화면 공유나 파일 공유 영상, 음성 컨퍼런스 기능을 매우 스무스하게 사용할 수 있다. 아이폰, 안드로이드, 맥, 윈도우즈 등 거의 모든 플랫폼을 지원하고 있다. ( 매일 11:15에 작은 팀 단위의 스탠드업 미팅을 하고 11시 30분에는 전체 스탠드업 미팅을 한다. 11시 30분의 스탠드업 미팅에서는 스크럼 리더들만 이야기를 한다) 사무실에 있는 사람들은 한 회의실에 모이고 없는 사람들은 모두 다 zoom을 통해서 화상으로 회의에 참여한다. ( 참고로 시애틀 사무실의 모든 회의실에서는 NUC라는 미니PC와 회의용 마이크, 카메라, 무선 키보드와 마우스 그리고 4K 대형 LCD TV (애써 만든 화면이 깨진다던지 데모를 할 때 해상도 떄문에 고생을 하지 않아도 된다. 빔을 사는 것보단 TV) 설치가 되어 있어서 어디서든 회의를 할 때면 항상 zoom으로 온라인 회의 채널을 열어둔다. 본인이 원한다면 특별한 보안이슈가 없고 자기 일정에 문제가 없는 선에서 하루 종일 zoom에 들어가서 회의를 할 수 있다.)

maydaystandup

노동절날 standup 하는 모습. 23명이 온라인으로 standup meeting중.

특별한 일이 (병원을 간다던지 아프다던지) 없는 이상은 어떻게 해서든 회의에 참여한다. 심지어 새로운 경력직 엔지니어를 뽑는 모든 인터뷰도 다 zoom을 통해서 공유가 되어서 기존의 인력들이 인터뷰어로 참여가 가능하다. 기술 이슈에 대한 회의라던지 의사결정에 대한 회의, 일단 2사람이 이상이 모여서 이야기를 한다면 그건 다 zoom에 화상 회의실을 열어두고 한다고 생각하면 된다. 카페에 앉아서 회의에 참여하는 사람도 있고 아예 택시 안에서 혹은 길을 걷다가 모바일 폰으로 회의에 참석하는 사람도 있다. 작은 팀 단위의 스탠드업 미팅(그냥 스크럼이다)에서는 뭘 했는지 뭘할건지 뭐가 문제인지를 이야기를 하는데 팀 전체가 필요없는 이야기를 하지 않으려고 노력을 한다. (모두가 스탠드업이 길어지는건 시간낭비라고 공감하고 있었다) 전체 스탠드업에는 모두 다 참여하는데 팀 리더만 이야기를 하고 특별한 공지사항이 있는 사람들만 이야기를 한다. 역시 마찬가지로 시간을 관리하려고 애쓴다. 잡담은 끝나고 나서 알아서…

3. Jira & Confluence - 효율적인 문서 공유와 이슈 관리

Devops Lab 에서 열심히 전사에 지원을 하고 운영을 하느라 고생하고 있는 이슈 관리 툴이다.( 전사를 지원하느라 고생하는 팀원들에게 다시 한 번 감사의 말씀을 드리고 싶다. ) jira는 다들 잘 알고 있을 꺼라고 믿고 더 이상의 자세한 설명은 생략한다. 그냥 여기다가 여담을 더 하자면….Anyframe Framework 팀에서 일하던 시절에도 Jira로 일을 했었는데 그 때도 매우 만족도가 높았었다. 심플하고 명확하고 쓰기 쉽고. 그 때는 Atlasian이라는 회사가 작았고 이렇게까지 커질 줄을 몰랐다고들 회상한다.( 우리 회사는 이 주식, 아니 회사를 사버렸어야한다! 아참 ALM 을 개발하고 프로젝트에 적용하던 사람들 역시 일부 프로젝트에는 지라를 사용하는 것을 권장했었다. 처음부터 쓸 수 있었으면 좋았을텐데…)

cryingfrog

나는 깊은 슬픔에 빠져있었다.

컨플루언스랑 지라까지 같이 쓰는 조합인데 다들 써봐서 알겠지만 개발관련 문서나, 기타 업무 관련 문서 혹은 파일 공유등에 컨플루언스를 쓰다가 다른걸 쓰게 되면 너무 불편해서 못 쓴다. ( 나도 알고 있다. 너무 논리가 없다는 걸. 생산성이니 ROI니 그런건 모르겠고 개발자로써 나는 그렇게 느끼고 있다. intelliJ를 왜 사야하야함? 이라고 물을 때 하고 싶은 대답과 비슷하다고 할 수 있다 ) 지라와 컴플라이언스 역시 slack 과 마찬가지로 이 툴도 외부망에 열려있다. 집에서도 이슈를 볼 수 있고 컨플루언스에 있는 마테리얼들을 찾아 볼 수 있어서 초반에 적응할 때 매우 도움이 되었다.

Confluence

Confluence에서 git hub 워크플로우를 논의하며 같이 업데이트 하고 있다.

4. GitHub

그렇다 CNCT  팀은 고객의 레포지토리나 정보에 대한 부분을 제외한 나머지 모든 프로젝트를 깃헙에 공개(해놓고 개발을 하고 있다. 다시 말하자면 모든 프로젝트가 오픈소스 프로젝트라는 말이다. (물론 해당 오픈소스의 주 컨트리뷰터는 SDSRA이고 깃헙상에 비공개 프로젝트가 만들어저있고 CNCT는 해당 프로젝트를 통해서 일을 하고 있다) 당연히 어디서든 인터넷만 되면 소스를 받고 올릴 수 있다.(잘 믿기지 않겠지만 이렇게 소스 코드에 대한 접근을 열어놓으면 집에 가서도 코드를 보게 된다. 나도 내가 이렇게 열심히 일을 할 지 몰랐다. 몰라서 빨리 배우고 싶은 열망이 크기도 했지만...) 오픈소스 다 보니 프로젝트 자체에 과련된 티켓(이슈)에 대한 관리는 주로 깃헙에서 통해서 한다. 특정 오류나 이슈 대한 의사결정을 하는 과정이 깃헙의 이슈를 통해서 다 공개가 되기 때문에 외부의 개발자이거나 나중에 팀에 참여한 사람들도 코멘트나 문서를 보고 왜 이렇게 의사결정을 했는지 이해를 하기 매우 좋다. 재미있는건 일반적으로 널리 알려져 있는 릴리즈 전략인 깃플로우를 약간 변형한 깃헙 브랜치 전략을 사용하고 있다는 점이다. 하나의 레포지토리에서 master, development 그리고 feature 브랜치를 만들어서 개발을 하지 않고 master를 fork해서 새로운 레포지토를 만들고 거기서 feature 브래치를 만들어서 머지를 하고 테스트가 끝나면 원래의 master 브랜치로 Pull Request(PR 혹은 Merge Request 라고도 한다. )를 요청한다. 아무래도 상용 소프트웨어가 아니다 보니 릴리즈에 대한 관리를 git flow 처럼 타이트 하게 하진 않다. 모든 이슈에 대한 커멘트가 깃험에 남기 때문에 소스가 변경된 것에 대한 의사결정의 자세하게 읽어볼 수 있다.

githubscrumboard

github 프로젝트에 가입되어야지 보이는 스크럼 보드. 오픈 소스 프로젝트라 이슈 자체는 해당 프로젝트로의 github repo로 오면 확인이 가능하다.

5. AWS(Amazon Web Service), GCE(Google Cloud Engine)

여기 와서 정말 좋았던게 한국에선 온갖 난리 블루스를(?!) 춰야지 AWS 계정을 만들까 말까 했고 거기다가 배포하는것도 DMZ니 뭐니 ㄱ(?)고생을 했던걸 많이 봐왔는데 여기서는 이메일 주소 보냈더니 바로 계정이 짜잔! 개발환경덕에 AWS를 쓸일이 없었으니 너무 내용들이 다 생소해서 공부해가는데 많이 힘들지만 일단 쓸 수 있는게 어디냐며 행복하게 배우는 중이다. 참고로 여기서 만드는 K2 프로젝트를 거의 모르는 상태에서 시작해서 README 파일 읽고 AWS에 K8S 클러스터 구성하는데 반나절 정도 걸렸다. 한국에서 했다면 대략 3~4개월 걸리거나 아예 못했을꺼라고 생각한다. (ROI, 따지고 비용 결재 받는데 그렇게 걸린다는 이야기다.) 참고로 GCE에 K8S 클러스터 구성하는데는 1~2시간이면 된다. 사실 커맨드 한줄이면 똬앟!

6. Proxy?

그 딴거 없다. Yeah!



CNCT의 Agile 활동들과 문화

위에서 툴들을 소개하면서 CNCT가 어떻게 일하는지 설명했지만 다시 한번 여기서 하고 있는 Agile 활동과 문화에 대해서 정리를 해본다.

1. 각 팀 별로 Stand up meeing at 11시 15분

체크인은 생략 , 어제 했던일, 오늘 할 일, 그리고 blocker(이슈 혹은 일이 진행되지 못하게 하는 이유) 만 간략하게 말한다. 많으면 12~13명 정도가 참여하는 경우도 있지만 10분 정도로 마무리가 된다. 다른 사람의 발언에 끼어들거나 혼자서 너무 길게 말하면 누가 먼저랄 것 없이 “Post scrum!” 이라고 말한다. 특히 남이 말을 하고 있는 동안에 끼어들기 보다는 말을 끝나고 나면 잠깐 필요한 이야기를 하고 post scrum 때 이야기를 하자고 제안문화가 잘 정착 되어 있어 보였다. ( 참고로 Agile 개발 문화를 정착시키는 일을 했던 Jason이 가장 했던 던 중요했던 일은 당시 vice president였던 Richard의 입을 다물게 하는 일이었다고 한다. 15분 동안에 3분 동안 이야기를 해서 바로 여기부터 고쳐야겠다고 맘먹고 실행에 옮겼다고….미국은 이런게 가능한 문화를 가지고 있다는 점에서 부러웠다. 하지만 동시에 다행이라고 생각이 든 건 여기도 똑같이 처음부터 제대로 애자일 액티비티를 하고 있지는 않았다는 점에서 우리도 더 잘 할 수 있겠구나라고 느꼈기 때문이다. 각 스크럼 별로 직급에 상관없이 스크럼을 리딩을 해 줄 사람들이 필요하다. 선후배 안 가리고 거친 태클을 날릴 수 있는! )

standup

회의실이 꽉 찼을 때는 그냥 Joe의 랩톱을 이용해서 standup! 저기 수염난 Nathan이란 친구는 대충 경력이 20년이상이 된 엔지니어이고 Joe도 그정도 경력을 가지고 있는 엔지니어인데 아주 실력들이 굉장하다.(뭐랄까…모르는게 없다, 9년차 개발자인 나는 여기서 쭈구리가 되었다 후후 ㅠㅠ) 아무래도 백그라운드가 많이 다른 것 같아서 물어봤더니 대부분 시스템 엔지니어 출신이거나 DBA, 인프라스트럭처 엔지니어 혹은 데이터 분석 전문가들이라고 한다. 순수히 어플리케이션 개발자들은 거의 없는 듯…개발자들이 앞으로 뭘 해야 잘 먹고 잘 살 수 있을지 인사이트를 주는 경험이랄까….

2. Post scrum

스크럼에서 이야기를 하기에 이야기가 길어지거나 너무 상세한 이야기 혹은 의사결정이 필요한 상황이면 모두 다 포스트 스크럼으로 옮겨서 관련된 사람들만 이야기한다. 더 이야기가 길어질 때는 아예 스케쥴을 조정해서 회의를 한다던지 slack에 이야기를 한다. 무언가 문제가 될만한 것들은 github 에 이슈로 등록이 된다. 이슈가 등록이 되면 다시 그것을 ticket으로 만들어서 백로그에 담는다. 급한 것들은 바로 백로그에서 to-do 항목으로 옮겨지기도 한다.

3. General Stand up at 11시 30분

전체 팀이 모여 ( 30명 정도) 각 팀 리더만 발언권을 갖는다 (역시 직접 못 오는 사람은 zoom 으로 참여) emerging market 팀이나 customer team, open source, zonar 팀에서 하는 일들에 대해서 이 때 다 공유받는다. 매일 매일 일이 업데이트가 되어가는 상황을 모든 팀원들이 알 수 있다. 이 General 스탠드업은 팀이 나아가는 방향을 개개인들에게 공유하고 컨센서스를 이루는데 도움이 되는 매우 중요한 Activity라고 느껴졌다.

4. 비정기적인 기술적 의사결정 회의 및 마켓팅 전략 회의들 그외 기타 회의들.

이 곳에서도 또 한번 흥미롭다고 느낀것은 꼭 자기 팀의 희의가 아니더라도 많은 관심을 가지고 참여해서 의견을 공유한 다는 것이다. General Standup에서도 많이 느끼지만 팀 전체가 동일한 비전을 공유하고 그것을 달성하기 위해서 적극적으로 협업을 한다는 것을 다른 팀의 회의에 참여하거나 우리팀의 회의에 참석해서 많은 기여를 하는 팀원들을 통해 피부로 느낄 수 있었다.

5. 하루일과의 50% - 60% 정도만 개발.

8시간을 하루 동안 일을 한다고 생각하면 4시간 정도는 개발을 하고 1시간은 standup등이나 미팅으로 커뮤니케이션을 하고 1~2시간은 slack에서 다른 팀원을 도와준다던지 github에서 다른 팀원들의 PR을 리뷰를 하는데 사용한다. 개인에게는 효율이 떨어지는 시간 활용이라고 볼 수 있지만 결과적으로 다른 팀원들의 blocker를 빠르게 해결하고 PR을 빠르게 진행하도록 도와 팀 전체의 효율성은 높아지는 결과를 가지고 온다고 한다. 다른 팀원들의 blocker가 곧 자신의 blocker라는 공감대가 형성이 되어있고 서로 질문을 하고 답변을 하는것을 매우 즐기는 문화가 부러웠다.

6. 탄력적인 근무시간 하지만 시간낭비는 하지 않는다.

점심 시간은 쓴만큼만 업무시간에서 제외한다. 점심을 먹으면서 일하면 8시에 출근하면 4시에 퇴근할 수도 있다(다들 그렇게 하지는 않지만 특히 가정이 있는 팀원들은 일찍 나와서 일찍 퇴근한다.) 가끔씩은 중간에 탁구를 치기도 하고 커피를 마시기도 하지만( 굳이 밖으로 커피를 사러 나가는 친구들은 거의 없는게 신기하다. 부엌에 있는 커피머신이 스타벅스꺼라 그럴까.) 확실히 업무 집중도가 높다는걸 느낄 수가 있었다. ( 어떻게 느끼냐면…slack에 질문을 하면 순식간에 답변들이 주르륵 달려올라오고 지속적으로 이슈제기와 PR에 대한 리뷰 질문응답들이 쉴새없이 이루어진다. )

아예 집에 일찍 퇴근해서 저녁에 일을 하는 경우도 있고 주말에도 일을 하기도 한다. 한국에서의 자율출근제는 주 40시간 업무라는 제약 사항이 있는데 이곳은 좀 더 플렉서블하다. 이번주에 35시간을 일하고 다음주에 45시간을 일하기도 하고 아예 32시간(4일)만 일하고 다음주에 48시간을 일하는 경우도 있다. 이렇게 근무를 하는 것을 따로 기록을 하지 않고 팀원들이 자율적으로 관리하도록 맞기고 있다. 회사와 임직원들간의 신뢰가 깊게 쌓이지 않으면 쉽지 않을 것 같아 보이지만 이곳에서는 그걸 하고 있다.( 애초에 인터뷰 과정에서 스스로 알아서 일 할 사람들만 뽑는다고 보는게 더 맞는 말일 수도 있겠다^^;;)



좋은 개발 문화 + 좋은 개발 환경은 (좋은) 개발자가 스스로 일하도록 돕는다.

여기까지 CNCT의 툴과 개발 문화에 대해서 소개를 해보았다. 이게 더 낫다 나쁘다라고 단정적으로 말하기는 어렵지만 확실한 건 여기와서 한국에 있을 때보다 더 즐겁게 개발을 하고 있으며 어느 때보다 새로운 것을 배우는 것이나 실력 향상이나 개발 목표를 달성하는데 많은 동기를 부여받고 있다는 점이다. 한국에서도 CNCT처럼 열린 환경에서 사용할 수는 없지만 이런 사례를 토대로 좀 더 개발자 친화적이고 팀의 상호작용을 도모하는 형태의 개발 환경으로 발전을 시켜나가고 싶다.

2018

Create Configmap

less than 1 minute read

Create from files kubectl create configmap helm-config-data --from-file=/root/.helm/repository/repositories.yaml -n usernamespace

Back to top ↑

2017

Add Kubernetes secret

less than 1 minute read

How to add secret for image registry kubectl create secret docker-registry rediikey --docker-server=<imagerepourl> --docker-username=<username> -...

Mac os sierra dns reset

less than 1 minute read

Mac os sierra dns reset sudo killall -HUP mDNSResponder;sudo killall mDNSResponderHelper;sudo dscacheutil -flushcache;

Samsung CNCT의 개발환경 문화 소개

13 minute read

안녕하세요? 최근 연구소에서 개발 센터로 둥지를 옮긴 개발혁신팀 Devops Lab의 김광영 프로라고 합니다. 저는 CICD 셀에서 배포툴을 개발하던 중 Global Exchange Program(이하 GEP)에 선발되어 현재 미국 Seattle의 Cloud Native Com...

Back to top ↑