본문 바로가기메뉴 바로가기


카카오 사내 기술 세미나 ‘Techtalk’ – 첫 번째 이야기

우리는 개발하는 과정에서 여러 어려움을 겪습니다. 프로젝트를 시작하는 과정에서 기술 스택을 선정하기 위해 여러 사항을 검토하고 동료들과 논의합니다. 또한 TDD나 BDD 같은 여러 개발 방법론도 검토하고, 코드 스타일/리뷰뿐만 아니라 깃헙 브런치/풀리퀘스트/merge/deploy 등 절차도 마련합니다. 프로젝트 진행 중간중간에 마주치는 이슈는 그 종류도 너무 많아 나열하기도 어렵고요.

이런 어려움을 해소하고자, 많은 개발자분들이 프로젝트에 참여하는 동료들 또는 조직 차원에서 기술 스터디를 진행해오고 있습니다. 또한, 프로젝트 종료 후에는 동료들과 회고하면서 기록/공유하고 있습니다. 문서 형태로 공유하는 경우도 있고, 발표 자료를 만들어 세미나로도 진행합니다. 

내가 겪는 문제는 나만의 문제가 아닐 것입니다. 

앞서 동료 중에 누군가 먼저 겪었던 문제일 테고, 이를 해결한 방식도 다양할 것입니다. 기존에는 이런 경험에서 얻은 노하우가 옆에 있는 동료에게 구두로 전해지거나 소속된 조직 내에서 공유되어 왔습니다. 딱히 울타리를 치고 선을 그은 건 아니었겠지만, 조직을 넘기엔 쉽지 않았습니다.

우리가 겪는 문제와 해결하기 위한 노력, 이 과정에서 얻은 가치를 함께 나누기 위해 카카오 그리고 카카오 공동체가 만들어가는 사내 기술 세미나 ‘Techtalk’을 개최하게 되었습니다.


크루들의 지식과 경험을 나눠 함께 성장해 가는 
Techtalk 첫 번째 이야기

1. 왜 디아서버파트는 MSA를 선택했나? –  카카오 / wade.lee (이원제)

카카오 디지털아이템서버개발파트에서 이모티콘 플러스 구독자 천만을 기원하며 일하고 있는 트와이스 덕후 개발자입니다. 부업으로 사내 자바바라tv에서 Kotlin 종파 선교활동을 담당하고 있습니다.

성장을 위해 달려오느라 거대해진 이모티콘 서비스와 그만큼 많이 쌓인 기술 부채를 두고, 천년만년 행복하게 개발하려는 구성원들이 선택한 MSA.

기존 레거시 서비스가 단일 서버로 너무 큰 코드 베이스와 기능을 가지고 있어, 이것을 분할하려는 목적과 MSA에서 추구하는 다양한 장점들을 흡수하기 위해 MSA 기반으로 다양한 기술들을 시도하고 있습니다.

아직 이 과정은 현재 진행형이지만, 왜 MSA를 선택했고, 무엇을 했으며, 어떤 미래를 그리고 있는지를 이 자리를 빌려 공유해 MSA 도입을 고민 중인 다른 팀에 도움이 되었으면 합니다.

2. 나의 페어 프로그래밍 탐험기 – 카카오엔터프라이즈 / hans.n9 (한현섭)

카카오워크 화상회의의 백엔드를 담당하고 있습니다. 미식축구같은 팀스포츠를 많이 하다보니 개발에서도 팀스포츠를 하는 것 처럼 힘들지만 재밌게 개발 할 수 있는 방법을 찾고 있습니다.

팀스포츠와 애자일 방법론 그리고 페어 프로그래밍에 대해 이야기 합니다.
애자일 방법론과 익스트림 프로그래밍 등에서 이야기하는 페어 프로그래밍 소개 및 이론적 장단점을 짚어보고, Pivotal Tracker를 바탕으로 하는 Pivotal Lab의 애자일 방법론에 대한 간단한 소개와 특징에 대해 정리해 보았습니다.

이를 바탕으로 자신의 커리어에서 페어 프로그래밍을 했던 순간들을 소개하며 각 순간마다 느낀 장단점과 현재 시도해보고 있는 페어 프로그래밍을 적극 활용하는 팀 운영 방법론을 소개하고 이에 대한 기대 및 필요한 피드백들을 공유하고자 합니다.

3. 단위 테스트 잘 작성하기 – 카카오 / genos.lee (이동준)

카카오 SA개발파트에서 검색광고 DSP 서버 개발을 주로 담당하고 있습니다. 어제보다 더 나은 코드를 작성하고 함께 성장하는 개발자가 되기 위해 꾸준히 노력하고 있습니다.

프로젝트를 진행하면서 Test Coverage를 높이기 위해 열심히 테스트 코드를 작성했습니다. 나중에 보니 읽기도 힘들고, 테스트는 성공했지만 버그가 생기는 경우도 있었습니다.

무엇이 문제였는지 알아보는 과정을 함께 공유하려 합니다. 먼저 테스트 코드를 왜 짜야 하는지에 대한 원론적인 내용부터 시작해서 좋은 테스트는 어떤 것이고, 무엇을 테스트해야 하는지에 대해서 정리합니다. 그러고 나서 깔끔한 테스트 코드로 리팩토링 하는 데에 중요한 단서가 될 수 있는 테스트 코드 냄새들에 대해서도 같이 알아봅니다.

첫 번째 Techtalk을 마치며

wade.lee (이원제)
그동안 작업했던 것들에 대해 공유함으로써 많은 분들이 도움이 될 것 같다는 피드백을 주셔서 감사했습니다. 디테일에 대한 아쉬움을 이야기 주신 분들도 많았는데 저도 아쉬웠으니, 그건 다음 기회에 저도 더 경험하고 고민한 다음 공유할 수 있으면 좋겠습니다.

이렇게 공동체 안에서 나오는 다양한 경험과 고민이 많이 많이 더 밖으로 공유되고 이야기되면 언젠가 카카오 안에서 공통의 문제를 해결하는 오픈소스 프로젝트 같은 것도 생겨날 수 있지 않을까 상상도 해봅니다.

hans.n9 (한현섭)
아무래도 주제가 디테일한 기술이나 명료한 근거보다는 경험담에 의존하다 보니 적어둔 목차만큼은 어렵겠구나 하는 느낌은 있습니다. 하지만 준비과정 자체로 애자일, xp, scrum, kanban, lean sw dev 등 많은 자료들을 다시 읽으면서 제가 겉핥기로 알고 있던 지식들을 잘 정리할 수 있게 되었다는 점은 좋았습니다. 프로그래밍은 아무래도 어느 범위까지는 혼자 해낼 수 있는 일들이 많고, 기술 자체에 대한 열정이 넘치는 분들이 많다 보니 상대적으로 팀으로서의 현실적인 모습은 이야기되지 않는 경향이 강하다고 느끼고 있습니다. 그런 이야기들이 좀 더 자주 나오는 게 가능한 카카오 공동체가 되었으면 합니다.

genos.lee (이동준)
세미나를 준비하면서 그동안 봤던 다양한 자료들을 한곳으로 모아 정리할 수 있는 좋은 기회가 되었습니다. 제 스스로도 학습한 내용을 정리하고, 지금 개발하고 있는 부분에 잘 적용하고 있는지 되돌아보는 계기도 되었습니다. 더불어서, 혼자 공부하기보다는 다양한 사람들과 함께 나누고 피드백을 받으면서 학습효과도 더 커졌음을 실감할 수 있었습니다. 좀 더 많은 사람들과 이전보다 속도를 내서 성장하고자 하는 분들께 세미나에 도전해보시길 추천드립니다. 어떤 주제로 세미나를 진행하시더라도 경험이 적은 크루에게는 견문을 넓힐 수 있는 기회가 되고, 경험이 많은 크루에게는 알고 있던 내용을 리뷰할 수 있는 기회가 될 수 있다고 생각합니다.


카카오 개발자들의 적극적 참여와 공감을 이끌어 낸 첫 번째 Techtalk은 무사히 잘 마쳤습니다.

크루들의 성장을 위한 세미나, 프로그램, 이벤트들은 많이 있지만 함께 일하는 동료 개발자들의 생생한 경험과 고민을 공유하는 사내 기술 세미나는 처음이라 많은 분들이 관심을 갖고 참여해 주시고, 반가워해 주셔서 더 의미가 있었습니다.

다음 카카오 개발자들의 Techtalk은  ML, DL, 추천 등 데이터를 주제로 진행될 예정입니다.
이상으로 카카오 사내 기술 세미나 ‘Techtalk’ 첫 번째 이야기를 마치겠습니다.

감사합니다.

candice.hong
candice.hong 카카오에서 Developer Relations를 담당하고 있어요.
Top Tag
2021
2021-new-krew
Ad Platform
Ad tech
adaptive-hash-index
adt
adtech
agile
agilecoach
ai
algorithm
Algorithm/ML
Algorithm/Ranking
almighty-data-transmitter
Analyzer
android
angular
anycast
App2App
applicative
Architecture
arena
ast
async
aurora
babel
babel7
Backend
BApp
bgp
big-data
binary
ble
blind-recruitment
block
Block Chain
blockchain
bluetooth
brian
business
Cache
cahtbot
canvasapi
Caver
cch
cd
CDR
ceph
certificate
certification
cgroup
chrome
ci
cite
client
clojure
close-wait
cloud
cloudera-manager
clustered-block
cmux
cnn
code-festival
code-review
codereview
coding
coding test
competition
Compliance
component
conference
consul
container
contents
contest
cookie
core-js@3
Corporate Digital Responsibility
couchbase
COVID-19
cpp
Data
data-engineering
DB
deep-learning
Dependency
dependency-graph
desktop
dev
dev-session
dev-track
developer
developer relations
developers
devops
digitalization
digitaltransformation
dns
docker
dr
Electron
employeecard
emscripten
eslint
extract-text
Feature List
Featured
Feedback
friendstime
front-end
frontend
functional-programming
funfunday
fzf
garbage-collection
gawibawibo
GC
github
globalpollution
go
graphdb
graphql
Ground X
growth
ha
hadoop
hate speech
hbase
hbase-manager
hbase-region-inspector
hbase-snashot
hbase-table-stat
hbase-tools
hri
id
if kakao
ifkakao
infrastructure
innodb
internship
ios
item
Java
javascript
javascript web-assembly
JCMM
JIRA
jsconf
jsconfkorea
json
k8s
kafka
kakao
kakao-Career-Boost-Program
kakao-commerce
kakao-games
kakaoarena
kakaobrain
kakaocommerce
kakaocon
kakaoenterprise
kakaok
kakaokey
kakaokrew
kakaomap
kakaopage
kakaotalk
KAS
KCDC
khaiii
Klaytn
Klip
kubernetes
l3dsr
l4
License
links
Linux
load-balancing
MAB
Machine Learning
machine-learning
map
marathon
meetup
melon
mesos
message
Messaging
microservice
Microsoft TypeScript
mm
mobil
monad
monorepo
ms-office
MSA
mtre
mysql
mysql-realtime-traffic-emulator
nand-flash
network
new
new-krew
nfc
Nickface
nomad
ocp
olive
onboarding
open
open source
opensource
openstack
OpenWork
OSS
page
parallel
PBA
performance
planning poker
Platform
polyfill
programming-contest
project-structure
pycon
python
quagga
react
reactive-programming
reactor
recap
recommendation
recommendation system
recruitment
redis
redis-keys
redis-scan
related-blind
Renderer
rest
Rome
rubics
ruby
rxjs
s2graph
scala
scalaz
seminar
Serve
server
service
sharding
shopping
socket
spark
spark-streaming
SpringBoot
ssd
Statistics/Analysis
Stomp
storage
storm
style-guide
summer internship
support
System
talk
talkchannel
tcp
tech
Techtalk
test
thread
Thread-Debugging
time-wait
tmux
Topic Modeling
typescript
Untact
update
User Story
vim
vim-github-dashboard
vim-plugin
vue
vue.js
WASM
web-cache
web-worker
webapp
webgl
WebSocket
webworkers
weekly
work
workplatform
개인화 추천
길찾기
라이선스
연관 추천
오픈소스
오픈소스검증
의존성분석
일하는방식
협업
All Tag
2021
2021-new-krew
Ad Platform
Ad tech
adaptive-hash-index
adt
adtech
agile
agilecoach
ai
algorithm
Algorithm/ML
Algorithm/Ranking
almighty-data-transmitter
Analyzer
android
angular
anycast
App2App
applicative
Architecture
arena
ast
async
aurora
babel
babel7
Backend
BApp
bgp
big-data
binary
ble
blind-recruitment
block
Block Chain
blockchain
bluetooth
brian
business
Cache
cahtbot
canvasapi
Caver
cch
cd
CDR
ceph
certificate
certification
cgroup
chrome
ci
cite
client
clojure
close-wait
cloud
cloudera-manager
clustered-block
cmux
cnn
code-festival
code-review
codereview
coding
coding test
competition
Compliance
component
conference
consul
container
contents
contest
cookie
core-js@3
Corporate Digital Responsibility
couchbase
COVID-19
cpp
Data
data-engineering
DB
deep-learning
Dependency
dependency-graph
desktop
dev
dev-session
dev-track
developer
developer relations
developers
devops
digitalization
digitaltransformation
dns
docker
dr
Electron
employeecard
emscripten
eslint
extract-text
Feature List
Featured
Feedback
friendstime
front-end
frontend
functional-programming
funfunday
fzf
garbage-collection
gawibawibo
GC
github
globalpollution
go
graphdb
graphql
Ground X
growth
ha
hadoop
hate speech
hbase
hbase-manager
hbase-region-inspector
hbase-snashot
hbase-table-stat
hbase-tools
hri
id
if kakao
ifkakao
infrastructure
innodb
internship
ios
item
Java
javascript
javascript web-assembly
JCMM
JIRA
jsconf
jsconfkorea
json
k8s
kafka
kakao
kakao-Career-Boost-Program
kakao-commerce
kakao-games
kakaoarena
kakaobrain
kakaocommerce
kakaocon
kakaoenterprise
kakaok
kakaokey
kakaokrew
kakaomap
kakaopage
kakaotalk
KAS
KCDC
khaiii
Klaytn
Klip
kubernetes
l3dsr
l4
License
links
Linux
load-balancing
MAB
Machine Learning
machine-learning
map
marathon
meetup
melon
mesos
message
Messaging
microservice
Microsoft TypeScript
mm
mobil
monad
monorepo
ms-office
MSA
mtre
mysql
mysql-realtime-traffic-emulator
nand-flash
network
new
new-krew
nfc
Nickface
nomad
ocp
olive
onboarding
open
open source
opensource
openstack
OpenWork
OSS
page
parallel
PBA
performance
planning poker
Platform
polyfill
programming-contest
project-structure
pycon
python
quagga
react
reactive-programming
reactor
recap
recommendation
recommendation system
recruitment
redis
redis-keys
redis-scan
related-blind
Renderer
rest
Rome
rubics
ruby
rxjs
s2graph
scala
scalaz
seminar
Serve
server
service
sharding
shopping
socket
spark
spark-streaming
SpringBoot
ssd
Statistics/Analysis
Stomp
storage
storm
style-guide
summer internship
support
System
talk
talkchannel
tcp
tech
Techtalk
test
thread
Thread-Debugging
time-wait
tmux
Topic Modeling
typescript
Untact
update
User Story
vim
vim-github-dashboard
vim-plugin
vue
vue.js
WASM
web-cache
web-worker
webapp
webgl
WebSocket
webworkers
weekly
work
workplatform
개인화 추천
길찾기
라이선스
연관 추천
오픈소스
오픈소스검증
의존성분석
일하는방식
협업

위로