전체 글 (51) 썸네일형 리스트형 데이터는 쌓는 것보다 분석 대상을 먼저 정해야 한다. 전문가들은 데이터는 분석 대상과 목적을 먼저 정하고 데이터를 쌓아야 한다고 합니다. 그런데 현업에서 일하다보면 많은 분들이 데이터를 일단 쌓고 분석 대상을 나중에 생각하는 모습을 자주 목격할 수 있었습니다. 그래서 오늘은 '왜 데이터는 쌓는 것보다 분석 대상을 먼저 정해야 하는지'를 이야기하고자 합니다. 1. 데이터는 많이 쌓는 것보다 필요한 것만 쌓아야 한다. 과거에 PM(Product Manager) 팀 리더가 데이터 적재에 대한 업무를 요청했었습니다. 내용인즉, 모든 화면에 있는 요소(버튼, 텍스트, 페이지)에 대해서 모든 이벤트(클릭, 성공/실패, 이동, 마우스 오버 등)를 로그로 쌓아달라는 것이었습니다. 그래서 우선순위는 차치하더라도 업무의 목적과 효과에 대한 질의응답하는 과정에서 '모든 요소에.. 평균(Average)의 함정 - 편차 우리는 아주 어렸을 적부터 '평균'이라는 데이터 산출법으로 대화하고 성적에 대한 기준으로 사용합니다. 하지만 성인이되고 직장생활을 하면서 여러 지표를 다룰때도 마찬가지로 평균을 사용합니다. 아마도 20세이상 모든 인류가 피타고라스 정리는 몰라도 평균은 알거라고 생각합니다. ㅎ 오늘 이야기하고 싶은 주제는 '평균으로 인해 빠지기 쉬운 함정'입니다. 학교 성적으로 평균을 사용하는 것은 아무 문제가 없었는데 지표로 평균을 사용할때는 주의해야 한다니... 어떤 이야기인지 알아보시죠. :) 평균이란, '모든 항목의 합을 항목의 개수로 나눈 값입니다.' 즉, 중간값을 구하는 것입니다. 바로 중간값이라는 특성때문에 함정이 빠지는 것이고 자기가 함정에 빠졌는지도 모르고 지나가는 것입니다. 평균이 왜 위험한 것일까요? .. 각 레벨의 엔지니어에 대한 기대치 매니저 생활을 오랫동안 하면서 팀원들이 주니어-미드-시니어가 되는 과정에 갈피를 잡지 못하는 상황을 심심치 않게 볼 수 있었습니다. 조금이나마 오늘도 성장하길 원하는 분들에게 도움이 되고자 실제로 제 팀원들에게 공유한 내용을 공개합니다. 주니어는 Specialist가 되야 합니다. 전체적인 아키텍처보다 특정 Tool, 라이브러리나 Language(Kotlin, Swift등)에 Expert하는 것을 추천드립니다. 물론 아키텍처가 중요하지만, 언어와 라이브러리의 본질을 깨닫고 능숙하게 사용했을때 전체적인 시야가 넓어지면서 아키텍처도 이해하고 볼 수 있습니다. 시스템의 전체적인 부분보다 1~2개의 도메인 영역에 Specialist가 되시길 추천드립니다. ‘이 서비스에서 저 영역은 저 사람을 찾아가라.’ 정도로.. 개발자는 게을러야 한다. - To be a lazy engineer 우리는 부지런함을 지상 최고의 덕목으로 삼으라는 교육을 받아왔습니다. 그런데 저는 개발자는 최대한 게을러질 수 있도록 최선을 다해야 한다고 생각합니다. 이것은 일을 하지 말라는 것이 아닙니다. 개발자가 게을러질 수 있는 것은 누구보다 빠르게 하는 방법을 찾고, 단순하고 반복적인 일은 자동으로 할 수 있게 만들 수 있는 직업이기 때문입니다. 게으름뱅이 개발자의 덕목 #1. 궂은 일은 최대한 기계한테 일을 맡기기 매니저로서 팀원들을 평가하다 보면 자기 평가에 CS 운영업무를 많이 처리했다고 자랑스럽게 작성하는 경우를 볼 수 있습니다. 과연 이게 좋은 것일까요? 요즘 가뜩이나 개발자 연봉이 천정부지로 오르고 있는 마당에 ROI가 낮은 업무하느라 중요한 업무를 못했다는 이야기로 해석될 수도 있습니다. 여러분이라.. Spring WebFlux 사용시 InvalidDefinitionException 처리 방법 start.spring.io에서 WebFlux를 다운로드 받아서 기본적인 세팅을 하고 실행하는데 아래 에러가 나온다. 그래서 검색해보니 web과 webflux 모듈이 충돌이 나는듯 하다. 그래서 해결책은 web 제거! 끝. 에러: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `reactor.core.publisher.Mono` (no Creators, like default constructor, exist): abstract types either need to be mapped to concrete types, have custom deserializer, or contain add.. Monolith를 MSA로 전환을 계획할때 필요한 세가지 시스템을 오랫동안 운영하다보면 자연스럽게 모노리스가 됩니다. 얼마 안됐는데 코드가 이렇게 많아졌어? 라고 생각하신다면 비즈니스가 잘 성장하고 있다는 의미입니다. (자축하셔도 좋습니다.) 하지만 기쁜 마음도 잠시, 간단한 수정을 하더라도 어디에 Side Impact가 있을지 몰라 주저하는 마음이 든다면 이미 시스템에는 신호등에 빨간불이 들어왔다고 보셔야 합니다. 유지보수의 효율성이 떨어지고 있다는 이야기니까요. 자. 그럼 어떻게 해야 할까요? 특정 부분을 MSA로 분리할때가 온겁니다. 그럼 Monolith를 MSA로 전환을 계획할때 필요한 세가지를 알아보시죠. 1. 조직장으로 부터 꼭! 리소스 지원을 받아야 합니다. MSA 전환이나 서비스 분리는 리소스와 시간을 많이 요구하는 작업입니다. 디펜던시가 크던 .. 비즈니스 프로세스를 그리자. — BPMN 2.0 소프트웨어 프로젝트 문서를 작성하면서 사용자가 어떻게 사용하고, 시스템은 어떻게 작동하는지 그림으로 나타내야 할때가 다반사이다. 사용자가 이 시점에서 무엇을 해야하고, 입력받은 시스템은 어떻게 동작해야 하는지 그림으로 그리려면 Flow Chart(1921년부터 사용, 1985년 ISO 표준 제정)와 UML을 많이 사용했을 것이다. 하지만 엔지니어링에 포커스를 둔 Flow Chart와 UML은 어딘가 모르게 3% 정도 부족할때가 생기게 마련이다.(혹시.. 나만 그런가?) 2005년에 UML의 복잡성을 과감하게 단순화(Simplify)시킨 새로운 표준이 나왔으니 이름하여 BPMN(Business Process Modeling Notation) 1.0이다. 그리고 여러번의 판올림을 하고 나서 2011년에 BP.. 슬기롭게 로그(Log)를 쌓는 법 How to Make Effective Logging 모든 언어, 시스템과 프레임 워크를 통틀어서 공통적으로 가지고 있는 기능은 Log입니다. 우리는 응용프로그램이 의도한대로 동작하고 있는지 확인하기 위해서 또는 문제가 발생된 부분이 어디인지 찾기 위해서 로그를 적극적으로 활용하고 있습니다. 그런데 많은 개발자들이 시스템에 남기는 로그를 저마다의 생각과 개성을 반영하여 남기고 있습니다. 지금이라도 웹서버의 access.log를 열어보거나 Graylog같은 모니터링 시스템에서 로그를 확인해 보시기 바랍니다. 로그를 기반으로 시스템이 잘 운영되고 있다고 진단할 수 있나요? 아마도 꽤 오랜시간을 들여다 보거나 한숨이 절로 나오실 겁니다. 결국은 아무렇게 쌓은 로그는 많은 개발자들이 시스템을 운영하는 환경에서 .. 이전 1 2 3 4 5 6 7 다음