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


안녕하세요. 저는 스타크래프트 1 프로게이머 활동을 했었고, 이후 백엔드 개발자로 만 5년 차의 경력을 가지고 있는 카카오 광고 플랫폼 개발자 hero입니다. 작년 6월에 카카오로 합류하여 약 1년 동안 경험한 카카오의 문화와 카카오 광고개발팀에 대해 이야기를 해보려고 합니다.

그때 그 시절 ..


카카오 합류 전에 했던 일 그리고 카카오 합류를 결정한 이유

이전 직장에서 3년 정도 근무하면서 배달 앱에서 카테고리 별로 가게 리스트를 노출하는 서비스를 담당했었습니다. 광고 별 리스팅 순서에 대한 알고리즘 개발 및 광고 상품 노출과 관련된 서비스 개발을 했었고, 주문이 몰리는 식사 피크 시간과 대용량 이벤트를 대응하기 위해 이벤트 소싱, CQRS 패턴 기반 고성능 서비스에 대한 경험을 했었습니다. 고객과 접점이 되는 서비스 개발을 주로 하다 보니 앞으로의 개발자 커리어를 위해 플랫폼 개발에 대한 경험도 필요하다는 생각을 하던 도중 광고플랫폼파트의 채용공고를 보고 합류를 결정하게 되었습니다.

카카오에서 현재 하고 있는 일과 역할

광고개발팀 광고플랫폼파트에서 광고 공통 과금 플랫폼을 담당하고 있습니다. 카카오에서는 카카오톡 지면 광고, 카카오톡 채널 광고, 다음 광고 등 여러 지면에서 다양한 타입의 광고 서비스를 개발하고 있는데요, 광고 서비스들에서 공통적으로 필요한 과금 및 정산 기능을 연동해서 사용할 수 있는 공통 플랫폼을 개발하고 광고 서비스 시스템에서 사용할 수 있도록 지원하고 있습니다.

합류 전에 기대했던 카카오의 모습

외부에서 바라봤을 때 if kakao와 같은 기술 세미나와 기술 블로그 등을 통해 사내에 좋은 개발자분들이 많이 계실 거라고 생각했고, 입사 후에도 사내 세미나와 사내 위키 등을 통해 기술적으로 많은 도움을 받고 있습니다. 영어 닉네임과 ­ 완전선택적 근로시간제로 대표되는 수평적 문화들에 대해서도 궁금했는데, 경험해보니 단순 닉네임으로 호칭하는 것을 떠나 프로젝트 요구 사항 회의 때도 리더 간의 논의 내용을 사내 아지트에서 모두 투명하게 볼 수 있고, 누구나 더 좋은 방향에 대해 자유롭게 의견을 낼 수 있으며 그 의견들이 실제 프로젝트에 적용되는 것을 보고 놀랐던 기억이 있습니다.

새로운 업무와 새로운 환경에 적응하기

입사 후 한 달 정도는 코로나로 인한 주 2일 순환근무제였고, 이후에는 전사 원격근무제로 진행되고 있어서 이직 초기에 비즈니스를 파악하는데 어려움이 있었습니다. 그리고, 광고 시스템이 다양한 서비스들로 구성되어 있어서 흐름을 파악하기가 어려운 데다가 광고 및 과금 관련 용어들을 이해하는데 어려움이 있었는데, 작은 Task의 업무를 동료분들과 함께 페어 프로그래밍으로 진행하면서 비즈니스에 대한 이해와 함께 파트에서 개발하는 관점을 알아가며 적응을 하게 되었습니다. 또한, 사내 위키에 개발팀 및 기획팀에서 비즈니스에 대해 잘 정리해둔 위키 문서가 있어서 모르는 부분들이 있을 때마다 참고하고, 매일 진행하는 데일리 미팅 때 궁금했던 점을 자유롭게 질문하며 점차 적응을 하게 되었습니다.

개발자로서 느낀 카카오의 매력

수평적인 문화를 기반하고 있어서 토론을 통해 자유롭게 의견을 공유하고 더 좋은 방향으로 이끌어나가는 부분이라고 생각합니다. 입사한지 며칠 되지 않아서 파트에서 진행하는 오프라인 코드 리뷰에 참여하게 되었는데, 특정 상황에서 비즈니스 예외 처리를 어떻게 할 것인지에 대해 논의하던 도중 저에게 의견을 물어보셔서 개인적인 의견을 얘기했더니 괜찮은 의견이라고 공감을 받고 시스템에 적용이 되었습니다. 입사한지 얼마 되지 않았고 파트 내에서 제일 적은 경력을 가지고 있어서 입사 전에 적응에 대한 걱정이 있었는데 카카오의 수평적인 문화를 경험하며 적극적으로 의견을 내게 되었습니다.

카카오 개발자가 되어 얻은 것들

카카오 광고 시스템은 DSP, 광고 서버, 광고 추천, DMP, 실시간 보고서 등의 다양한 시스템으로 이루어져 있는데 큰 시스템을 경험하며 광고 생태계에 대해 알게 되었고, 공통적으로 필요한 과금과 관련된 기능을 지원하며 플랫폼을 개발할 때 어떤 관점을 가지고 개발해야 하는지에 대해 배웠습니다. 그리고, 플랫폼 시스템을 개발할 때 우리의 클라이언트는 플랫폼을 사용하는 시스템과 시스템의 개발자들이라는 사실을 알게 되어서 최대한 불편 없이 플랫폼을 사용할 수 있도록 지원해야 한다는 것을 배웠습니다.

그리고 개발하다 보면 요구 사항과 시스템에 맞는 다양한 데이터 소스들을 사용하게 되는데 각 데이터 소스의 전문가분들이 계셔서 처음 도입 시 지식 습득을 위해 공부하는 시간과 스파이킹 하는 시간을 단축시킬 수 있게 되고, 개발 시 이슈가 발생할 수 있는 부분들을 체크해 주셔서 많은 도움을 받고 있습니다. 또한, 릴리즈 버전마다 패치 노트와 개발 가이드를 제공해 주시고 편하게 Q&A를 할 수 있어서 데이터 소스에 대한 지식을 쉽게 배울 수 있다는 점도 장점입니다.

카카오에서 가장 인상 깊었던 순간

최근에 사내 커뮤니케이션 사이트에 배치 수행 결과를 전송하는 요구 사항에 대해 몹 프로그래밍을 제안했었는데요, 파트 내에 모든 분들이 흔쾌히 수락해 주셔서 하루의 오전 시간 동안 진행하며 서로의 생각을 공유하며 토론을 통해 좋은 방향으로 이끌었던 점이 기억에 남습니다. 파트 내에서 페어 프로그래밍은 꾸준히 진행하고 있었지만, 몹 프로그래밍은 처음이고 부담스러워하실 수도 있다고 생각했는데 끝난 이후에 좋은 경험이었고 주기적으로 진행하면 좋을 것 같다고 얘기해 주셔서 기억에 남습니다.

또한 개인적으로 이전부터 Kubernetes 대해 관심이 있었는데 전 회사에서는 시간적 여력이 되지 않아서 Docker 기반으로 개발 환경을 구축했었는데요, 현재 카카오에서 모든 서버 환경을 Kubernetes 기반으로 이관하는 프로젝트를 진행 중이어서 Kubernetes 이관 및 배포 프로세스 구축 작업을 주도적으로 진행하면서 지식과 경험을 얻게 된 것도 좋았습니다.

그리고 매월 한번 씩 온라인 회식을 진행하고 있는데 회식 때 재택 기간에 입사해서 실제로 얼굴을 뵙지 못한 분들과도 친해질 수 있는 간단한 게임이 있으면 좋겠다는 의견이 나와서 게임에 관심이 많은 제가 간단한 게임을 준비하고 있는데요, 최근 회식 때 라이어 게임을 너무 재밌게 했던 것도 기억에 남네요.

카카오 광고 개발의 매력

작년부터 광고 시장에서 온라인 광고의 점유율이 오프라인 광고보다 높아지고 있는 추세인데, 엄청난 사용자가 유입되는 카카오톡 및 다음 페이지에 노출되는 광고 서비스를 경험할 수 있다는 점이라고 생각합니다. 또한, 카카오에서는 sales 기반이 아닌 audience의 관심사를 분석하고 사용자 별로 광고를 타게팅 하는 성과형 광고를 서비스하고 있어서 이러한 경험들을 해볼 수 있다는 것도 큰 매력이라고 생각합니다. 대용량 데이터에 대한 고려와 다양한 광고 서비스 및 지면을 고려해서 안정적이면서도 각각의 광고 서비스의 요구에 맞게 사용할 수 있도록 설계 및 구현하는 경험을 해볼 수 있는 것 또한 장점이라고 생각합니다.

마지막으로,
광고개발팀에서 이루고 싶은 목표

제가 알고 있는, 앞으로 경험하며 배우게 될 기술 및 비즈니스 지식을 카카오 광고 서비스의 요구 사항을 구현하고 다양한 문제상황을 해결하는 데 도움이 되도록 적용하려고 합니다. 그리고, 존경하는 시니어 개발자께서 생각하는 개발자가 들을 수 있는 최고의 칭찬은 같이 일하는 바로 옆의 동료들에게 듣는 “이 사람과 같이 일하면 너무 편하고, 앞으로도 같이하고 싶다”라고 합니다. 저도 이런 칭찬을 받을 수 있도록 팀원들이 일할 때 신뢰감과 안정감을 주고, 다른 개발자들의 생산성을 저하시키는 불편한 포인트를 해결하는 팀원이 되는 것이 목표입니다. 지금까지 카카오의 문화와 카카오 광고개발팀에서 제가 담당하고 있는 플랫폼들에 대해 많은 얘기를 했는데, 관심 있으신 분들은 비즈개발실 서버 개발자 채용공고에서 광고공통플랫폼 파트로 지원부탁드립니다!

hero.es
hero.es 카카오 광고플랫폼팀에서 광고 공통플랫폼을 담당하고 있습니다.
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
개인화 추천
길찾기
라이선스
연관 추천
오픈소스
오픈소스검증
의존성분석
일하는방식
협업

위로