# 중니어에서 아키텍트로? 🏗 더 이상 주니 | 커리어리

# 중니어에서 아키텍트로? 🏗 더 이상 주니어도 아니고 그렇다고 시니어도 아닌 상태를 농담반 진담반 '중니어'라고 부릅니다. 주니어는 게임의 튜토리얼처럼 자신의 분야에서 무엇을 배워야 하는 지 비교적 명확한데요, 5년차 정도의 중니어가 되면 몇 가지 대표 스킬을 자유자재로 사용할 수 있지만 다음 스텝이 고민되기 시작합니다. 중니어 개발자는 스킬을 강화해서 시니어나 리드 개발자가 될 수도 있고, 특정 도메인을 깊게 파서 도메인 전문가가 될 수도 있습니다. (물론 두가지 역할을 함께 할 수 도 있습니다.) 저도 중니어로서 이런 저런 길을 탐색 중 인데요, 최근 <개발자에서 아키텍트로>라는 신작 책을 읽으면서 중니어의 다음 스텝으로 '아키텍트'라는 방식이 있음을 알게 되었습니다. 아키텍트라는 직업적인 분류는 없지만 책은 누구든 아키텍트가 될 수 있다고 말하며, 최고의 팀은 모두가 아키텍트인 팀이라고 말합니다. 여기서 아키텍트는 단순한 역할이기보다 생각하는 방식 자체로, 문제를 해결하는 제품을 만드는 데 있어 좋은 의사결정을 내리고 시스템 구조를 건전하게 가꾸는 방향을 가진다고 말합니다. 개발자뿐만 아니라 제품을 만드는 직업이라면, 그 리더의 모습이 아키텍트와 비슷한 태도일 것이라고 생각이 드는데요. 예전 글이지만, 아키텍트를 주제로 다루는 칼럼을 소개합니다. <개발자에서 아키텍트로>라는 책이 출간되듯이, 칼럼이 작성된 2017년보다 한국의 업계도 아키텍트에 대해 조금 더 이해하고 환경이 개선되고 있다고 생각하지만, 아키텍트가 더 많아지면 업계 전반의 역량이 좋아질 것 같습니다. <한국의 아키텍트> • 우리나라에는 뛰어난 개발자가 많지만, 세월이 흐르며 외국 개발자와 비교해서 분석과 설계 역량이 떨어진다. 이는 개인의 재능 문제가 아니라 환경차이 때문이다. • 우리나라는 빨리빨리&상명하복 문화 등 여러 환경 때문에 개발자들이 분서과 설계 역량을 가지는 아키텍트로 성장하기 어렵다. 아키텍트가 부족한 가장 큰 이유는 아키텍처링 노하우를 계승시켜 줄 선배들이 부족하기 때문이다. 개발 기술은 발달하는데 커다란 시스템을 설계하고 체계적으로 일을 나누고 개발하는 경험은 쉽게 할 수 없다. • 소프트웨어 업계만의 문제는 아니다. 여러 산업분야에서 실행력은 앞서지만, 시스템 설계 능력은 아쉬운 편이다. <소트프웨어 아키텍트란?> • 소프트웨어 아키텍트는 소프트웨어 시스템을 설계하는 사람으로, 커다란 시스템까지 설계할 수 있어야 한다. • 좋은 아키텍트는 비즈니스에 대한 이해로부터 시작하고, 미래 비즈니스 전략도 잘 알아야 한다. 또한 기술적으로 높은 수준을 가지고 있어야 한다. 소프트웨어 설계서를 작성하고 다른 사람이 이를 보고 개발할 수 있어야 한다. • 소프트웨어의 규모가 커지면 개별 프로그래머들의 역량이 뛰어나다고 성공적으로 소프트웨어를 만들기 어렵다. 아키텍트가 필요하다. <아키텍트를 양성하려면?> • 첫째, 소프트웨어를 개발할 때 분석과 설계 단계부터 진행한다. 문서를 제대로 작성하고 서로 리뷰하는 경험이 축적되어야 한다. • 둘째, 아키텍트 그룹을 운영한다. 회사의 중요한 기술적 이슈를 논의하고, 문서를 집중적으로 리뷰하기도 한다. 그리고 이 조직의 후보 인원을 선발하여 수년간의 훈련을 자연스럽게 받게 한다. • 셋째, 아키텍트 후보를 선발한다. 아키텍트로 성장할 가능성이 높은 개발자를 선발하여, 개발 이외 훈련을 시킨다. 아키텍트는 재능이 아니라 성향이 맞는 사람이다. 아키텍트는 글을 잘 쓰고, 타인의 말을 잘 들어주며, 창의력이 좋고, 정보를 잘 조직화하고, 인내심이 좋아야 한다. ⟪참고⟫ - 유호현, '과장도 팀장도 아닌 엔지니어입니다.' 2017.9.26. https://brunch.co.kr/@svillustrated/17 - 마이클 킬링, <개발자에서 아키텍트로>, http://www.yes24.com/Product/Goods/101865885

핵심은 아키텍트다

Zdnet

2021년 6월 27일 오전 11:24

댓글 0

함께 보면 더 좋은

# 카카오페이지 사례로 알아보는 Backend For Frontend(BFF) 📑 테오님이 잘 정리해주신 것처럼, 프론트엔드의 업무는 크게 ⑴데이터 보여주기, ⑵데이터(화면) 조작하기, ⑶서버로 데이터 보내기, ⑷서버에서 받은 데이터를 다루기로 나눌 수 있습니다. '⑷서버에서 받은 데이터를 다루기'를 잘하기 위해서, 데이터를 보내주는 서버팀과 지속적인 협업이 필요합니다. 이 협업과 업무를 더 잘하기 위한 방법으로 Backend For Frontend(BFF)가 있습니다. 개념적으로만 들었던 BFF를 멋진 동료인 카카오페이지 FE팀에서 사례를 다루어주어 공유합니다. <Backend For Frontend> • 규모가 큰 앱은 여러 마이크로서비스와 여러 플랫폼이 있을 수 있습니다. 여러 플랫폼이 여러 마이크로서비스의 데이터를 사용하게 되면, 프론트엔드는 여러 데이터를 're-format' 해야 합니다. 다른 의미로 데이터를 필터링하고 포맷팅하는 데 추가적인 자원을 쓴다는 것입니다. • BFF는 프론트엔드의 이런 데이터 처리를 대신 해주는 중간 레이어 입니다. 프론트엔드는 API를 직접 호출하지 않고 BFF에게 데이터를 요청합니다. BFF는 응답에 필요한 여러 데이터를 마이크로서비스에게 대신 요청하여 받아옵니다. 그리고 적절한 포맷을 바꾸어 프론트엔드에게 다시 알려줍니다. 결과적으로 프론트엔드는 데이터 요청 로직이 간단해지고, 인터페이스에 더욱 집중할 수 있습니다. • 단일 플랫폼에 하나의 서비스만 제공하는 애플리케이션이라면 BFF는 불필요 합니다. 그러나 여러 서비스를 제공하고, 여러 프론트엔드를 지원한다면 BFF는 적절한 선택입니다. BFF는 브라우저, 모바일 앱, 서드 파티 서비스 등 플랫폼의 종류 별로 두게 됩니다. 각 BFF는 각 플랫폼에 필요한 포맷과 데이터를 제공하는 역할을 합니다. <카카오페이지의 BFF> • 카카오페이지는 여러 플랫폼(Web, Android, iOS)을 지원하고, 여러 서비스의 데이터를 사용하고 있습니다. 그런데 BFF 없이 모든 플랫폼이 API에 다이렉트로 접근하면, API 엔드포인트가 분리되거나 스팩을 맞춰야 할때 큰 비용이 듭니다. 웹 프론트엔드는 생산성을 더욱 높이기 위해 BFF를 적용하였습니다. • Web BFF는 브라우저의 CORS 처리, 인증 처리, 데이터 호출을 담당하여, 프론트엔드 개발자는 화면에 집중할 수 있습니다 . Web BFF는 프론트엔드 플랫폼에 최적화되며 프론트엔드의 요구사항을 충족하기 때문에, 서버가 아니라 프론트엔드 개발자에게 구현과 안정성의 책임이 있습니다. • 여러 API를 호출하는 경우, 일반적으로 응답 값을 받아 상태관리에 저장하게 됩니다. 이 때 프론트엔드에서 필요하지 않은 값들이 올 수도 있고, 필요할 때마다 상태관리에서 연산을 하게 됩니다. GraphQL로 BFF를 적용한 후, API를 POST로 요청하고 브라우저의 캐시 대신 라이브러리의 캐시에 저장하게 되었습니다. 그리고 불필요한 값은 제거하여 프론트엔드에게 전달합니다. <GraphQL에 Redux로 보완> • 그런데 Apollo GraphQL의 Client 캐시는 카카오페이지 웹 적용에 이슈가 있었습니다. Apollo Client는 정규화 캐싱 정책을 따르는데, 쿼리도 기본적으로 CACHE ID를 사용해 모든 데이터를 store에 저장합니다. 따라서 레이아웃만 같고 데이터가 다른 여러 뷰가 동시에 그려진다면, 쿼리 호출 순서에 의해 의도와 다른 저장값이 나오는 이슈가 있었습니다 . • 카카오페이지 프론트엔드는 id 방식으로 캐싱하는 Apollo Client 대신 document 방식으로 캐싱하는 URQL을 사용하게 되었습니다. 또한 redux도 추가하게 되었습니다. GraphQL과 URQL만으로는 사용자의 클릭 이벤트가 발생하거나 스크롤로 데이터가 추가되는 등 비동기 상황의 복잡성까지 줄이지 못했기 때문입니다. URQL은 데이터를 fetch하고, 화면에 사용되는 데이터 저장은 redux에 하게 되었습니다. • 결과적으로 Web BFF를 통해, 비즈니스 로직과 데이터 처리 부분을 분리하여 복잡도를 낮출 수 있었습니다. ⟪참고⟫ - 테오의 프론트엔드. "시니어 개발자가 말하는, 프론트엔드 업무와 잘하는 프론트엔드 개발자란", 2022.1.24, https://yozm.wishket.com/magazine/detail/1294/ - Viduni Wickramarachchi, "The BFF Pattern (Backend for Frontend): An Introduction", 2021.2.24, https://blog.bitsrc.io/bff-pattern-backend-for-frontend-an-introduction-e4fa965128bf

카카오페이지는 BFF(Backend For Frontend)를 어떻게 적용했을까?

Kakaoent

추천 프로필

현직자에게 업계 주요 소식을 받아보세요.

현직자들의 '진짜 인사이트'가 담긴 업계 주요 소식을 받아보세요.

커리어리 | 일잘러들의 커리어 SNS