
나에게 5년차라는 개발 연차는 조금 특별하다. 첫 회사에서 내가 속한 조직에는 시니어 개발자가 없었다. 내가 입사했을 때 1년 정도 차이가 나는 선배개발자가 한분 있었고, 입사한 후 6개월 텀으로 1~2명 정도의 신입 개발자들만 채워졌다. 당시에 동료들과 나는 5년차 개발자에 관해 이야기를 많이 했다. 회사에 5년차 정도의 개발자 한분만 오셨으면 좋겠다고 매일 이야기했다. 당시에 나는 5년차 개발자는 엄청난 내공을 가지고 있는 환상 속의 시니어 개발자라고 생각했다. 2년차로 막 들어섰을 무렵 합류하신 팀장님과 면담에서 내 목표를 물은 적이 있다. 나는 그때 최대한 빠르게 시니어 개발자가 되는 것이라고 답했다. 굉장히 멋쩍게 웃으셨는데 이제는 그 웃음의 의미를 알고 있다. 내가 생각하는 시니어 개발자의 방..

2020년 2월 19일 우아한형제들 기술블로그에 작성한 글 입니다. (woowabros.github.io/experience/2020/02/19/introduce-shop-display.html) 안녕하세요 우아한형제들 프론트검색서비스팀 권용근입니다. 저는 "먼데이 프로젝트" 라는 2019년 대형 프로젝트에서 요란하게 탄생하였고, 탄생한 순간부터 지금까지 배달의민족 최전방에서 활약 중인 2019년 4월 1일생 가게노출 시스템 을 소개하려고 합니다. 가게노출 시스템이란? 가게노출 시스템 은 배달의민족 최전방에서 사용자에게 가게를 노출하는 시스템입니다. 쉽고 단순하다고 생각할 수 있지만, 사실 이 시스템은 매우 복잡하고 어지러운 시스템입니다. 단순히 캐시를 서빙하는 것이 아닌, 십여개의 외부 시스템과 수십개..
멀티 모듈 프로젝트란? 멀티 모듈 프로젝트를 처음 알게된 건 2017년 초였습니다. 당시에 저는 단일 프로젝트를 사용하고 있었습니다. 예를 들어 제가 회원 시스템을 개발 한다고 하면 member internal api member external api member batch 와 같이 서로 독립된 프로젝트 단위로 가지고 있었습니다. 이런 구조를 가지고 있을 때 가장 큰 문제점은 시스템의 중심 Domain 이 가져야할 구조와 규칙 등을 동일하게 보장해주는 메커니즘 이 없다는 것 입니다. {: style="width:75%; display:block; margin:40px auto 0;"} 개발자는 동일한 Domain 을 가지고 있는 위 3가지 어플리케이션을 열심히 복&붙하며 개발을 하게 됩니다. 매우 귀찮..
개발관 3년차에는 내가 어떤 개발자가 되고 싶은지 명확한 개발관이 생겼다. 나는 기술에 매몰되어 가는 개발자였다고 생각한다. 그동안의 나는 기술을 쫓았고, 트렌드를 따라가려 했으며, 깊이를 더하기 위해 노력을 해왔던 것 같다. 물론 이것은 개발자로서는 당연한 것들이다. 올해 많이 깨져버린 것은, 이것보다 중요한 것이 있다는 것이다. 3년차에서 가장 머리 속에 깊게 남는 말은 팀장님께 들었던 이 말이다. (정확하지는 않지만 이런 뉘앙스?) "용근님이 처음 작성하신 코드가 더 효율적이고, 더 좋은 기술로 안정적일 수도 있다. 하지만 우리는 구성원 모두 함께 할 수 있는 개발을 해야한다." 처음에는 많이 아이러니 했다. 왜냐하면 팀장님은 내가 알고 있는 실력 있는 개발자 중에서도 탑급이였기 때문이다. 기술력이..
2018년 11월 8일 스프링 원 투어 서울 컨퍼런스 중 정윤진님의 Spring Cloud Gateway 세션 Spring Cloud Gateway SPEC Spring 5 + Spring Boot 2 + API Gateway Pattern What is an API Gateway? 하나로 요청을 받아, 요청을 분리. Routing Canary-ing Security Monolith Strangling Monitoring Resiliency Spring Cloud Gateway Type Appliance SAAS (ex: ELB) Web Server Mesh Side Car Pattern + Proxy Pattern Developer Oriented History 초기 버전인 spring-cloud-zu..
요즘 기존 프로젝트의 일부를 새로운 프로젝트로 떼어내는 작업을 하고 있다. 노후된 프로젝트인 점과 내가 알고있는 프로젝트가 아니라는 점이 지옥을 맛보게 해주고 있다. 정리를 하다보니 기능이 중복된, 프로젝트의 성격 이상으로 많은 정보를 제공하는, 불필요하게 많은 정보를 요구하는 등 이상한 End Point들이 발견되었다. 아마 오랜시간 요구사항이 점점 늘어나면서 불가피하게, 혹은 요구했었지만 이제는 다르게 사용하는 API가 되었지 않을까 생각한다. 정리를 위해 이 API들을 사용하는 서비스들에 대해서 전부 조사를 해야했고, 굉장히 많은 시간을 소비해야 했다. 정리를 하고난 후 보니 중복된 것, 사용되지 않는 것, 불필요한 요구, 제공 스펙, 그리고 그것들을 위한 테스트 코드들이 보였다. 현재와 미래의 모..
개발자의 개인 장난감인 토이 프로젝트에 대해서 이야기해보려고 합니다. 저는 웹 개발 입문과 거의 동시에 토이 프로젝트를 시작했고 이 프로젝트들을 통해 많은 성장을 이루었다고 생각하고 있습니다. 그래서 토이 프로젝트를 통해 무엇을 얻을 수 있었는지에 대하여 말해보려고 합니다. 토이 프로젝트란? 토이 프로젝트가 무엇일까요? 크고 간단하게 2가지로 나눈다면 이렇습니다. 1. 여유시간만 투자한다. 본업과 건강에 영향을 미치지 않는 선에서 여유시간을 투자해야합니다. 2. 어떠한 목적을 달성한다. 기능, 스펙, 규모, 일정에 대한 제약은 있을 수도 있고 없을 수도 있습니다. 런칭 혹은 배포도 마찬가지입니다. 프로젝트가 반드시 런칭되거나 배포될 필요는 없습니다. 이것은 내가(혹은 우리가) 프로젝트의 목적을 무엇으로 ..
안녕하세요. 우아한형제들에서 결제시스템을 개발하고 있는 권용근입니다. 입사한 지 4개월 만에, 드디어 우아한형제들 기술 블로그에 글을 남기게 되어 감회가 새롭습니다. 저는 최근 결제 시스템의 개비를 진행하며 경험한 성능, 부하, 스트레스 테스트 경험을 작성해보려고 합니다. 시스템 개비 입사하고 보니 저에게는 결제 API 단순화, 결제 시스템 데이터베이스 분리 및 파티션 도입, 비동기 결제 시스템 개발 이라는 굵직굵직한 작업들이 기다리고 있었습니다. Java, Spring Framework, ORM 등의 기술 지식은 그간 해온 게 있기 때문에 (구글링이 있기 때문에) 파악하는데 어렵지 않았지만, 이미 구축되어 있는 시스템을 손대는 것은 쉬운 일이 아니었습니다. "거대 규모 프로젝트에서 내가 수정한 코드가 ..
내가 이상적으로 바라던 그런 모니터링 환경을 만나게 되었다. 그러나 나는 이 툴들을 쓸 줄도, 어디까지 해주는지, 뭘 해주는지도 잘 모른다. 결국 이전에 하던 귀찬은 방법들을 찾게 된다. 비효율적이지만 익숙한 방법을 고수하는 것, 이게 바로 기술부채 구나! 그래서 내가 처음 접하게 된 모니터링 툴들을 정리해본다.1. New RelicNew Relic은 SaaS 기반의 APM(Application Performance Management) 서비스를 제공하는 회사이다. New Relic 의 다양한 서비스 중 내가 가장 잘 사용할 줄 알아야 할 서비스는 APM과 INFRASTRUCTURE다. APM은 어플리케이션에 대한 성능 모니터링을 제공하고, INFRASTRUCTURE는 서버에 대한 성능 모니터링을 제공한..
지난 글(젠킨스 사용하여 자동 배포환경 만들어보기) 에서 Jenkins Build Pipeline 으로 자동 배포 시스템을 구축하는 것에 대해 공유를 했었습니다.댓글을 통해 Jenkins Pipeline 이라는게 있다는 것을 처음 알고 되고..!!그 때서야, 젠킨스 2.0 의 가장 큰 변화가 Jenkins Pipeline 이라는 것을 알게 되었습니다. 이 때부터 마음의 숙제로 가지고 있었지만, 최근 블로그 통계로 젠킨스 블로깅 글의 방문이 높다는 것을 알고 급하게(groovy를 제대로 숙지하지 못한 채..ㅜㅜ) 글을 작성하게 되었습니다.(최근 이 짤을 굉장히 많이 쓰게 됩니다..)Jenkins Pipeline 이란 스크립트를 통해 파이프라인의 흐름을 정의하는 기능입니다. 이 스크립트는 groovy로 작성..