[백엔드] 수많은 요청을 장애 없이 처리하는 일

2023. 6. 12. 16:40People/IT 직무인터뷰

백엔드 신휴창 선임연구원

 

간단한 자기소개 부탁드려요. 

안녕하세요. 10년차 개발자 신휴창입니다. JSP로 업무를 시작해서 안드로이드 등 다양한 개발 경험을 쌓고 지금은 백엔드를 담당하고 있습니다. 전에는 게임 플랫폼 백엔드 개발자로 근무했었는데요. 팬데믹 시절을 겪으면서 인테리어 관련 산업군이 각광을 받을 것으로 생각해 한샘으로 이직하게 됐습니다. 한샘이 리빙테크 플랫폼으로 성공적인 안착을 할 수 있도록 TF팀에 소속되어 신규 프로젝트를 진행하고 있습니다. 

 

한샘에서 하는 업무에 대해 조금 더 자세히 이야기 해주시겠어요?

저는 주로 한샘 DT의 새로운 프로젝트에 대한 이해를 높이고, 기획자들과 함께 프로젝트의 구현 가능성에 대해 논의하며 개발 설계 작업을 하고 있습니다. 또 가장 최근에는 3D 언택트 상담, 상담파트 BE 개발을 맡아서 작업했습니다. 이 외에도 팀 내 개발 가이드, 프로젝트 구조, 형상 관리에 대한 정책 등 여러 초기설정에 대한 논의를 해가며 개발 업무에 앞선 업무들도 처리하고 있습니다.

 

백엔드 개발자로서 어떤 하루를 보내는지 궁금해요.

출근하면 오늘 할 업무를 간단히 정리한 후 개발팀 모두가 참여하는 가벼운 회의(Daily Scrum)로 하루를 시작합니다. 개개인의 업무 리뷰를 진행하고 봉착한 문제가 있다면 도움을 구하기도 하는 시간인데요. 팀원들이 여러 가지 시각으로 동료의 이슈를 바라봐주기 때문에 합리적인 방안으로 문제를 해결할 수도 있고, 견문을 넓힐 수도 있는 아주 좋은 시간입니다.

 

Daily Scrum 이후에는 각자 일정에 따라 움직이는데 현재는 프로젝트 초반이라 협업하는 일들이 많습니다. 기획리뷰 회의, 개발계획에 대한 회의가 주를 이루고, 개발팀 내부에서도 협업규칙, 프로젝트 구조, 기술 검토 등의 주제로 회의를 합니다. 이후 맡은 기능에 대한 설계 및 분석 작업에 돌입합니다. 각종 설계문서 및 UML을 작성하며 시스템의 이해도를 높일 수 있도록 도모하고, 설계한 방향대로 개발 업무를 진행하고 있어요.

 

주로 협업하는 대상자는 어떤 분들인가요? 

업무 초반에는 프로젝트의 기획 영역에 대한 이해도를 높이기 위해 기획자 분들과 긴밀한 소통을 하며 업무를 진행합니다. 기획자가 새로운 프로젝트 아이디어를 가져오면 개발적으로 가능한 지 여부를 검토하고 로직을 잡는 일들을 합니다. 고객이 편한 방향으로 많은 기능들을 집어넣고 이 프로그래밍이 어떻게 흘러갈 지 정의하는 UML을 그립니다. 

 

기획자와 소통이 정리가 되면, BE 개발을 위한 인프라 요소를 결정하고 DevOps 담당자와 논의를 거쳐 아키텍처를 구성합니다. 이후 본격적으로 API에 대한 설계 및 구현 단계를 거치면, Client(iOS/Android/WebFE) 개발자 분들과 리뷰를 하면서 의견을 조율합니다. 동시에 연동 작업을 진행하고 오류나 문의사항에 대응하고 있어요.

 

 

백엔드 개발자에게 한샘은 어떤 매력이 있나요?

한샘의 레거시 기술들을 최신 기술로 모두 전환하고 있기 때문에 좋은 경험을 할 수 있는 최적의 시기라고 생각하고 있습니다. 한샘은 현재 리빙테크 플랫폼을 지향하며 많은 체질 개선 중에 있습니다. 상당히 매력적인 기술 스택으로 변화를 시도하고 있고, 기존의 시스템들도 점진적으로 변화를 시도하고 있죠. 예를 들어, 기존에는 엑셀에다가 고객 장표를 썼다면, 이제는 웹에서 고객의 요청을 바로 주문으로 이어지게끔 하는 하나의 '연결성'을 만든다고 보면 될 것 같아요. 디지털로서의 전환이 하나씩 이루어지고 있습니다. 한샘몰은 '빙산의 일각'이라고 보시면 됩니다. 그 뒤에 엄청난 것들이 있거든요. 제조, 물류, 공정 그리고 인테리어와 리모델링을 전부 갖추고 있기 때문에 일반 온라인 쇼핑몰에서 다루는 것보다 훨씬 더 많은 것들을 다룰 수 있다는 장점이 있습니다.

 

분명 쉽지 않은 길이고, 여러 가지 개선할 과제가 많이 있습니다. 하지만 각 부서 간 긴밀하게 연결된 여러 시스템을 MSA 환경으로 변화시키면서 한 층 성장할 수 있는 기회가 많다고 생각해요. 단순 기능 개발이 아닌 큰 그림을 그릴 수 있는 아키텍처나 관심 있는 기술에 대해 직접 검토해 볼 수 있거든요. 또 피드백을 통해 얻은 개선점들을 프로젝트에 적용시키면서 점진적으로 발전할 수 있다는 매력도 있고요.

 

한샘의 개발 환경은 어떤가요? 

개발 환경도 매력적이에요. 작은 규모의 회사에서는 경험할 수 없는 아키텍처를 갖추고 있기 때문에 이런 환경에서 근무할 수 있다는 것도 큰 장점이라고 생각합니다. 여러 시스템 간 개발환경이 서로 상이하긴 하지만, 현재 진행 중인 프로젝트를 기반으로 말씀드리면, 인프라 영역은 AWS를 사용하고 있습니다. AWS Kubernetes Cluster 인 EKS(Elastic Kubernetes System) 환경에서 개발하고 있습니다. 각 영역별로 특징을 살려 EKS+SpringCloud를 활용하여 MSA를 구축하였습니다. 주요 개발 언어는 Java를 사용하고 Springboot를 이용하여 각각의 MSA서비스를 개발하고 있습니다. JPA와 QueryDSL을 이용하여 Database를 다룹니다. 자주 사용되고 변경이 적은 데이터에 대한 Cache는 Elasticache(Redis)를 이용하고 있습니다. Circuit Breaker로는 Resilience 4j를 이용합니다. 메시지브로커로는 Kafka를 채용하여 사용하고 있습니다. 저희 팀에서는 개발환경을 설정할 때 선정한 기술에 대한 기술 검토와 팀원 모두의 리뷰를 통해 선정하고 적용하고 있습니다.

 

※ 모니터링 개발 환경
- Cloudwatch & Insights
- MSA 모듈 간 Tracking을 위한 Zipkin, Sleuth
- 시스템을 모니터링 하기 위한 Prometheus + Grafana 
- 로그를 면밀하게 분석하기 위한 Opensearch(AWS) + Logstash 

 

한샘의 많은 개발 선배님들이 다져놓은 환경이고, 최신 트렌드도 반영해 놓은 것들이 많아서 경험할 수 있는 것들이 굉장히 많다고 말씀드리고 싶어요. 

 

성과지표는 무엇으로 잡으시나요?

먼저, 지정된 납기일에 대한 준수는 당연한 지표라고 생각합니다. 서버를 구성함에 있어 요구사항에 대한 변경이 예상 시기에 큰 어려움 없이 반영되도록 대처한다거나,  특정 기능에 대한 병목지점을 찾아 성능을 신속하게 개선하는 등 고객경험 개선과 연관된 사항들을 지표로 잡고 있습니다. 다음으로 가장 큰 지표로 삼고 있는 부분은 바로 '무장애 서비스'입니다. 문제없이 안정적인 서비스가 작동되는 것을 가장 큰 지표로 생각합니다. 또는 우리 프로젝트의 불편한 부분을 개선하여 운영 또는 개발에 이득이 되는 부분들을 지표로 잡고 있습니다. 당연히 해야 하는 일을 충실히 하는 것도 물론 중요하고 부가적인 부분들까지도 처리하고 해결하는 것을 성과지표로 삼습니다.

 

 

한샘에서 일하시면서 기억에 남는 순간이 있다면?

리모델링 상담(언택트 3D 상담/빠른상담) BE 개발을 하던 순간이 떠오르네요. 많게는 몇 억까지 가는 상품들인데, 언택트를 통해서 인테리어 계약을 일으킨다는 게 큰 부담이었거든요. 처음 기획서를 받아 봤을 때 개발해야 할 요소도 너무 많고 설계해야 하는 부분도 어려워서 난감했던 기억이 납니다. 하지만 꼼꼼한 기획서를 기반으로 UML을 작성한 후 그대로 개발에 옮겼더니 깔끔하게 정리가 되어서 보람찼던 경험이 있습니다. 대부분은 UML처럼 되지 않는게 일반적이었는데, 설계한 내용을 반복 숙달하면서 도식화하다 보니 안 풀리는 부분들도 방향이 보이기 시작했고, 업무가 수월하게 처리되었습니다. 또 막히는 문제들이 생기면 기획자 분께서 관련 담당자 분들은 연결해주셔서 대화를 통해 잘 해결해 나갈 수 있었습니다. 물론 변화에 따라 변경되는 부분들은 있었지만, 다시 한번 설계의 중요성에 대해 느끼게 되었고 매우 뿌듯했습니다. 그리고 어느 날, 기획자 분께서 메시지를 하나 보내 주셨는데요. 무슨 문제가 생겼나 싶어 열어본 pdf 파일이 고객과의 계약 체결 내용이었습니다! 실제로 언택트 3D상담을 통한 고객계약이 이뤄져서 굉장히 보람찼던 순간이었어요.

 

백엔드 업무를 원활하게 수행하기 위해 필요한 역량을 꼽는다면? 

가장 먼저 '의사 이해력과 전달력'이 필요하다고 생각합니다. 개발자는 기획의 의도를 정확하게 파악해서 구현해내야 하므로 정확한 의사 이해력이 필요합니다. 자기 멋대로 해석해서 만들면 안 되기 때문에 타인과의 소통 능력이 매우 중요하죠. '개발자는 외골수라 소통을 안 한다'는 썰도 있지만, 개발자에게 소통만큼 중요한 게 없다고 봅니다. 기획자, 디자이너, 개발자 등등 많은 분들과 소통을 하면서 새롭게 얻는 지식도 많고요. 

 

또 '문제해결력'도 중요합니다. 개발에 문제가 생겼을 때, 곧바로 어디가 문제인지 찾진 못해도 범위를 점진적으로 줄여가며 원인을 찾아갈 수 있는 자신만의 감이 필요해요. 센스죠. 그래서 문제가 발생했을 때 발 빠르게 조치할 수 있는 대응 능력이 필요하다고 생각합니다. 지금 해야 하는 것과 지금 하지 않아도 될 것을 판단하여 신속, 정확하게 처리할 수 있다면 좋을 것 같아요.

 

앞으로 한샘에서 어떤 개발자가 되고 싶은가요?

전 개발 조직에서의 Gateway(입구/출구) 역할을 해보고 싶습니다. 부서와 상관없이 한샘의 모든 트래픽을 관리하는 개발자가 되고 싶은 욕심이랄까요?😀 제가 담당하는 곳에서 장애가 발생하면 한샘의 모든 서비스가 마비된다는 책임감을 갖고 양질의 고객만족도를 달성하고 싶습니다.

 

함께하게 될 동료에게 한 말씀 부탁드립니다.

한샘에는 개선할 점을 명확히 전달하며 성장을 도와주시는 선배들, 적극적으로 경험을 쌓고 있는 후배들이 있습니다. 함께 소통하며 시너지를 낼 수 있는 곳이에요. 리빙테크 플랫폼을 지향하며 기술을 선도하는 회사로 발돋움하고 있으니 많은 지원 부탁드려요.