오블완 10

런던직장: 설계협의

디펜던시가 있어 차선책으로 마련해둔 브랜치가 있었다. 데이터 릴레이만 확인하려고 골든 모델 아웃풋 B를 저장한 것을 불러온 다음 기존 모델 아웃풋 A에 유니언 시키는 간단한 내용이다. A가 B보다 데이터 레벨이 낮다. Aggregation이후 Union하는건 코드 몇 줄로 끝나는 간단한 작업이지만, 오랜시간 협의가 필요했던 이유는 데이터 레벨이 가장 높은 디펜던시 C가 A와 B 사이에 와야했기 때문이다. 초안 A -> 1st agg -> 2nd agg -> C (merge) B ------------> 2nd agg ------/ 협의사항은 C의 설계를 바꾸어 데이터는 앞에서 모두 병합한 상태로 받되 B를 필터하고 바이패스할 수 있도록 로직 추가를 하는 일이다. 2안 A -> 1st agg (merge)..

런던직장: 주말공부3

생각만큼 진도를 못 나갔다. 6개 주요함수 중에서 3개를 손대는 걸로 작업량이 아쉽게 되어 어제 시간을 대충 보낸게 살짝 후회가 되었다. 지난 주말에 한두개 밑작업을 해둔 상태여서 이번 주말동안 앞 작업 마무리 후 나머지까지 6개 모두를 완성할 생각이었다. 구현 세부사항을 설정하면서 코드를 전개해 나가는데 막히는 부분이 있어 100줄 정도 선에서 작업을 그치게 되었다. 주 함수를 토대로 하여 다른 직업군이 끼어들어야 하는 부분이 있어 직업군에 해당하는 부분을 빼둔 것이 마음에 걸린다. 다음주말에는 오늘까지 안되던 부분을 최소한 마무리 지어놓고 전체 얼개를 좀 더 짜임새있게 만드는데 신경쓸 수 있게 해야겠다.

런던직장: 주말공부2

점심약속이 있었다. 일부 노던라인 구간이 정비중이라 버스를 대신 타면서 추가 시간이 걸렸고, 오랜만의 약속 자리가 흥겨운 나머지 생각보다 오래 밖에서 시간을 보냈다. 생산적으로 보낼 시간이 줄어들어 살짝 후회하기도 ... 내일 테스트해볼 수도코드 정리 완료해두는게 것으로 만족한다. from pyspark.sql import SparkSession, functions as F class CP_Demand_Model: def __init__(self, global_params, ip_params, dispensing_params, clinics_params, selfcare_params, vaccinations_params, intervention_flag=False): self.spark = SparkSe..

런던직장: 디펜스

플젝 로딩이 걸리고 있고 어제오늘까지 성공적으로 방어한 듯 싶다. Lead Analyst 역할을 맡고, 디벨로퍼 역할 이외에 데이터과학자 스킬 안에서 할 수 있는 부분들을 추가로 했다. 필요한 데이터 온보딩하는 부분이나 데이터 엔지니어링 쪽 관련 커뮤니케이션이 필요한 쪽을 하곤 했다. 그냥 되는 건 없어서 ... 🤷 그래도 하다보니 여기까지 왔다. 미팅 참석하다보면 아무래도 본업 개발 집중이 흩어지는 측면이 있기에 매니저 역할은 넘겼고 QA도 적당히 나눠 구했다. 내 과제 스콥을 벗어나는 데이터 SME 관련 업무가 넘쳐 신규 에픽 지원 요청을 했다. 성공하면 코드개발만 집중할 수 있을 것 같다? 바래본다.

런던직장: 효율 높이기

공용개발 워크스페이스 트래픽 정체가 종종 발생한다. 일요일 오후에 독점하고 사용해도 런스루 48분이 나오니 평일 중에 잡들은 한두시간을 넘기는게 보통이다. 특히 내 담당 에픽은 모델 끝단에서 개발중인 부분이라서 유닛 테스트를 어떻게 구성하면 (전체 배치 동작 없이) 효과적으로 내 모듈을 검증할 수 있을까 고민이 많다. 데이터 샘플링을 하기 위해 하이레벨로 (200k 정도) 추출해봤더니 4mb 정도 용량이 된다. 작성중인 스크립트는 디펜던시들을 푸느르 진도를 많이 못 나갔다. 매니저들간 인수인계를 앞두고 내일 현황 보고미팅들이 있어서 결정 필요사항들을 간단히 정리했다. 몸상태가 100%가 아니라 제대로 만들지는 않았고 주요 요점 네가지를 바탕으로 아주 간단하게 대여섯장 정도 만들었다. 큰 것 중에 하나는 ..

런던직장: 주말공부

수도코드를 쓰는 것으로 오늘 하루가 끝이 났다. 코드 전개라던지 디자인 할 영역들이 절대 복잡하지 않은데도 이렇게 시간이 오래 걸린 것에는 도메인 지식 부족이 컸던 것 같다. 앞으로 구성해야 하는 함수 모델이 3개 더 남았다. 아래 작성한 2개를 포함해 총 6개 모두에게서 글로벌하게 사용되는 변수 세팅값을 찾는 데 1/3 정도 시간이 흘러갔다. 그리고 나머지 메인함수 2개 각각에 플러그인 해야하는 데이터 소스를 파악하고 계산 로직 및 파라미터들을 역산하는데 나머지 시간을 사용했다. 항생제 복용하면서부터는 몸에서 같이 싸우기 시작하는지 컨디션이 더욱 떨어지는데 씁쓸할 따름이다. 일요일 남은 주말 이어서 완성할 수 있는 부분들이길 바라고 아래 남겨둔다. # Init global variables cpws_r..

런던직장: 가장 중요한 일

아침에 베타테스트 종료 설문을 보내놓고 출근길에 올랐다. 편도선염이 낫지 않은 상태였고 약국에 들렀다 스탠드업 미팅에 아슬아슬 들어설 수 있었다. 돌아가면서 담당티켓을 코멘트하는 방식이 나와는 참 맞지 않다고 또다시 생각했다. 짧은 몇 마디로 모든 고민과 질의응답을 함축해야 하는 시간이 너무 어렵다. 긴 시간 들여 논의해야 되는 부분들이 한가득인데 해소되지 않은 채로 티켓 순회하는 건 제대로 동작하는 프로젝트가 아닌듯하다. 무늬만 애자일을 추구하고 있는 건 아닌가 스탠드업을 추가로 만들어낸 동료에게 불만이 생긴 걸 어떻게 잘 해소해야 할지 고민해야 할 것 같다. 겨울이 오는 소리가 어둑어둑한 저녁으로 다가온다. 가장 중요한 일을 정리해두고자 하는 마음이 앞서 나간다. 개인 과제를 마무리하였으니 본업에서 ..

런던직장: 엑셀모델 파이썬화

본업에서 가장 큰 공수를 차지하는 일부터 정리한다. 국정 과제 2기부터 참여하고 있다. 2년마다 refresh를 해야 하는 모델이다. 주 스택은 PySpark로 구성되어 있다. 개발환경은 Azure DataLake를 스토리지로 사용하고 별도 컨테이너 블롭을 SharePoint로 동기화 하기위한 파워셸 스크립트를 활용하여 사용자 입력 데이터들을 받아온다. 파이프라인 구성은 Databricks에 되어있고 시나리오 런타임은 클러스터 상황에 따라 보통 1시간에서 2시간 정도 소요된다. PySpark 코드들은 배치식으로 구성되어 메인 코드에서 별도 컨피그와 함수들을 호출해온다. 브론즈레벨 인풋들을 처리해 parquet 아웃풋으로 실버레벨 중간값들과 골드레벨 최종값을 저장한다. 지난 1기 감사 지적사항을 해결하는 ..

런던직장: 월간 해커톤 고민중

사내 해커톤 대회에 참여한다. 신규 런칭한 데이터 분석 플랫폼을 홍보하기 위한 행사 중 하나다. KPMG와 Palantir에서 컨설턴트로 참여하고 있어 공동으로 오퍼레이션을 맡았다. 한달 동안 주 2-3시간씩 시간을 내어 보도록 사이드잡 형태로 운영되는 형식이다. 총 16명의 참가자가 4개 조로 편성되었다. 소호 스퀘어 근처 사무실에서 오리엔테이션 및 데이터 분석 플랫폼 튜토리얼 진행이 있어 다녀올 수 있었다. 동일한 튜토리얼이 유튜브에도 올라와 있다. 처음 플랫폼에 접속하는 유저들이 분석 파이프라인을 어떻게 세워야하는지 가장 기본들을 다루는 내용이다.(SQL이나 파이썬으로 처리하는 데이터 전처리 과정들을 GUI로 구현하였는데 인터페이스 활용이 낯설어 초반 적응이 필요했다.) 5명의 데이터과학자들 중 리..