수정일자 : 2023-09-24
1. 요약
1. 프로젝트 명칭 : LG 화학 세일즈 포스 & 태블로 구축
2.기간 : '22.07.01 ~ '23.02.28 (8개월)
3. 장소 : 여의도 IFC, 여의도 코켐 빌딩
4. 고객사 : LG 화학 (화학사)
5.업무
- 태블로 서버 설치 (Window 2016 Server), 관리 및 모니터링
- 대시보드 20개 개발 (사업부용 매출 진척 레포트(7), 판매법인 레포트(2), 고객채권(2), C&C (Claim&Complain)(6), Custoemr Insight(1), 사업부 특화(2))
- 조직개편에 따른 대시보드 자동화
- 데이터 모델링과 태블로 사용자 함수를 통해 사업부별, 직급별 대시보드 및 데이터 권한 관리를
- 현업 및 수행사(PWC) 대상 태블로 사용 및 Self BI 교육
6. 데이터 소스 : Salesforce
7. 배운점 및 느낀점
1. Salesforce Sales Cloud 경험
- SFDC Sales cloud의 전반적인 과정을 경험
- 그동안 이론으로만 알고 있었던 CRM에 대해서, 직접 데이터를 보고 분석하고 대시보드를 만들면서 CRM의 중요성을 체감
2. Salesforce Objects를 데이터 원본으로 대시보드 개발
- 별도의 DW(Data Warehouse) / DM(Data Mart) 없이 직접 Salesforce를 연결하여 대시보드 개발
- 제한 사항 및 대안 적용 내용
- 추출의 최소 주기 1시간 (일반 RDB는 15분)
- SOQL 사용시 증분 추출 사용 불가
- 대안 : 사용하지 않는 필드는 '필드 숨기기' 적용
- Object의 데이터로 날짜 관련 계산식 사용시 데이터 원본 추출 및 조회 오류
- 대안 : 계산식없는 상태로 데이터 원본 게시 후 라이브로 대시보드 개발
- Union 불가능
- Object가 Blending의 보조 데이터 원본으로 사용 불가
- Fomula Field 사용 불가
- 대안 : Lookup 필드는 데이터 원본 생성시 Object간 관계 또는 Join 적용, 계산 로직은 Tableau 내에서 계산식 적용
- ismemberof(), username() 함수로 계산식 생성시 Objects간 관계로 구성된 데이터 원본은 적용 불가
- 대안 : Object간 물리적 결합인 Join을 통해 해결
3. 시나리오 기반 대시보드 개발
- 업무의 흐름대로 시나리오(6단계)를 구성하여 각 시나리오별 목적에 맞는 대시보드 개발
- 데이터 조회를 사업부용, 팀용, 담당자용으로 할 수 있게하여 데이터 조회 범위를 사용자가 선택할 수 있고, 사용자의 직급 및 직책에 맞게 첫 화면을 구성
4. SOQL(Salesforce Objects Query Language) 및 Excel 적극 사용
- 일반 SQL과 대부분은 비슷하지만, Salesforce만의 지원 함수들이 있음
- SFDC는 Lookup 관계가 많기 때문에 SOQL로 검증할 수 없는 부분은 Excel로 추출하여 VLOOKUP으로 해결
- SOQL및 Execel의 VLOOKUP 모두 SFDC Object를 데이터 원본으로 사용하는 만큼 데이터 조회 및 검증시 사용 필수
5. 태블로 계산식을 활용한 자동으로 대규모 조직에 대한 대시보드 데이터 권한 관리
- 태블로에서는 ismemberof() 함수를 지원하지만, 아래와 같은 자동화 관점에서 대규모 조직에서는 계산식에 대한 유지보수에 어려움이 있음
- Tableau Server에서 그룹의 변동이 있을 때마다 최신화 필요
- Tableau에서 ismemberof 함수 적용시 hardcoding을 해야하여, 조직 명 변경시 모든 통합문서(.twbx)에 대해서 hardcoding 최신화 필요
- 대안 : SFDC조직 정보 테이블이 있기 때문에 데이터 원본 활용 및 계산식(username(),LOD함수)을 활용하여 자동으로 데이터 권한 관리 실행
6. 다양한 데이터 모델링(Self Join, Join, Blending)을 활용한 대시보드 개발
- 고객 및 PI의 대시보드 기능 요건 충족을 위해서 계산식으로 해결할 수 없는 부분은 데이터 원본의 모델링을 활용해 해결
7. 대시보드 URL 매개변수 컨트롤
- Embedding시 URL 매개변수를 통해 데이터를 필터링 또는 대시보드의 옵션을 컨트롤 할 수 있음
8. LOD 함수, 날짜, 테이블 계산 등 다양하고 복잡한 계산식 활용 및 다양한 형태의 다이나믹 대시보드 개발
- 요건 충족을 위해 LOD 함수, 날짜, 테이블 계산의 고급 계산식을 사용
- 매개변수 동작, Radar 차트, Scatter Plot, Table 등 새로운 형태의 차트 개발과 기본적인 차트와 계산식을 응용한 다이나믹 대시보드 개발
9. 커뮤니케이션 능력 향상
- 수행사와의 요건 조율 및 프로젝트 팀원간 협력을 통해 커뮤니케이션 능력 향상
- 여러 차례 수행사 및 현업 교육을 통해 커뮤니케이션 능력 향상
2. 회고록
"시작부터 끝까지 경험해본 나의 첫 프로젝트이며, 다사다난했던 만큼 배우는 것도 정말 많았던 프로젝트"
삼성전자 프로젝트와 LG 화학 프로젝트의 가장 큰 차이점은 프로젝트 처음 투입되어서 끝날때까지 경험을 했다는 것이다. 입사한지 만으로 1년이 되어가는 시점에서 1년차를 감안하더라도 나는 여전히 배울 것들이 많다고 생각했다. 물론 삼성전자 프로젝트에서도 배우고 느낀 것이 많았지만, 프로젝트 중간에 투입되어서 프로젝트 첫 단게에서의 해야할 일들에 대해서 경험하고 싶은 개인적인 바램이 있었다. 또한 선택할 수 있다면 규모가 상대적으로 큰 고객사 사이트에서 프로젝트를 하고 싶었다. 위 같은 이유로 POC를 했던 오토닉스 프로젝트와 LG화학 프로젝트 중에서 어떤걸 더 하고 싶은지에 대한 질문을 받았을 때 주저없이 LG 화학 프로젝트를 하고 싶다고 어필했었다.
감사하게도 본부장님은 나의 의사를 반영하여 나를 LG화학 프로젝트로 보내주셨다. 우선 Tableau 팀은 부장님 1명과 대리님 1명 그리고 사원인 나를 포함한 3명이 1차 투입을 하고 이후에 사원 1명이 더 들어와 총 4명이 프로젝트를 이끌어 가는 상황이었다.
해당 프로젝트는 Salesforce 구축 및 Tableau 구축으로 Salesforce는 이미 오래전부터 프로젝트를 진행하고 있었고, 어느정도 구축이 되고 데이터가 쌓인 시점이 되어 Tableau 팀이 투입되어 데이터를 대시보드화 하여 시스템 운영에 활용하고자 함이었다.
프로젝트 투입 이후 다소 당황스러웠던 점은 PC 세팅도 되지 않았는데 바로 대시보드를 만들어야했던 점이다. 일정이 여유롭지 않았는지, 보고가 얼마 남지 않아 빨리 대시보드를 만들어야 한다는 것이었다. 더군다나 나는 Salesforce Objects를 직접 연결하여 개발해본적도 없었다. SOQL도 존재하는 것만 알았지 다루는 방법도 잘 몰랐다. 지식 수준이 거의 0%에 수렴한다고 봐도 무방할 정도였다.
같이 투입된 부장님도 Salesforce 프로젝트는 처음이라 하셨고,내가 기대할 곳은 같이 온 대리님이었다. 직전 프로젝트가 Salesforce를 이용한 프로젝트였기 때문이었고, Tableau 개발도 나보다는 경험이 많았기 때문이다. 하지만 대리님에게 도움을 많이 받기보다는 내가 스스로 많이 알아낸 것들이 많았다. SOQL을 잘 작성하려면 Objects간 구조를 잘 알아야하는데, 맨땅에 헤딩하며 공식 문서를 보면서 작성했다.
Tableau 개발적인 측면에서도 아무리 투입되자마자 개발을 해야했었지만, 여러명이 개발을 하게되는 만큼 개발 표준 문서를 만들고 그 이후에 개발을 착수했어야 함이 맞지만, 우리는 빨리 개발을 하기에 급급했다. 물론 3년차가 된 이시점에서는 SOQL도 제법 다루고, 개발 표준문서를 작성한 후 개발해야한다는 것을 알고 있지만, 당시 1년도 되지 않았던 나는 그것이 필요한지도 몰랐었다.
당시에 같이 투입되었던 대리님에 대해서 비하한다기 보다는 나는 그 경험을 통해 여러명이 프로젝트 투입을 했을 때 무엇을 먼저 해야하며, Salesforce 프로젝트를 하려면 무엇이 필요한지 알게 되었다. 내가 왜 프로젝트 첫 단계부터 경험하고 싶어했는지와 이유와 같은 맥락이다.
그렇게 맨땅에 헤딩하며 내 나름대로 Salesforce Objects의 세계관에 대해서 적응이 어느정도 되었고, 개발을 하며 여러 어려움에 봉착하기도 했었지만 Salesforce 개발자분들과 Tableau Community 검색을 통해서 개발을 이어나갔다.
그러다 또 한번 어러움에 봉착한 적도 있었다. 업무 과정에서 대리님께서 부장님과 트러블이 생기고 수행사 컨선털트분들과도 트러블이 생겼다. 바로 옆에서 트러블이 생기는 것을 목격한 나는 아무래도 감정적으로 영향을 받지 않을 수가 없었다. 꽤나 긴 갈등 끝에 인원교체가 결정되었다. 대리님이 나가고 사원 한분이 들어오셨고, 다른 선배 동료가 본부장님과 자주 오시면서 로직 개발이나 대시보드 개발에 도움을 주셨다.
결국 초기 멤버의 개발자 중에서 내가 데이터에 대한 이해도와 히스토리를 가장 많이 알고 있는 사람이 되었다. 지금 회상해보면 막중한 책임감이 있어 부담도 되었지만, 나름 즐기기도 했던거 같다. 게다가 나보다 선배인 개발자 분도 자주 오시면서 어려운 로직이 있으면 적용해주시면서 어려움에 봉착했던 프로젝트는 정상 궤도에 가까워졌다.
1차오픈(22.09.30)후 한달정도 지난 시점을 기점으로 프로젝트는 정상궤도에 오른것 처럼 보였다. 하지만 거기에 이르기까지가 정말 쉽지 않았었다. 개발적인 측면에서 로직 구현에 어려움도 있었고, 협업 측면에서 어려움도 있었다. 당시 일이 잘 안풀리다보니 밥맛도 없어졌고 그러다보니 살도 4kg 정도 빠졌었다. 로직 개발을 위해 밤을 새서 개발했던 적도 있었고, 남양주에서 예비군 훈련을 마치고 바로 출근, 개천절, 한글날 연휴때에도 모두 출근해서 로직 개발 및 대시보드 개발을 하기도 했었다.
선배 개발자의 도움으로 프로젝트 내내 적용하기 어려웠었던 로직을 구현해 냈고, 우리는 바로 2차 오픈 대상 대시보드 개발로 이어갔다. 그 과정에서 나랑 합을 맞췄던 수행사 컨설턴트는 프로젝트에서 빠지고 새로운 컨설턴트 분께서 오시게 되었다. Sales Could에서 가장 중요하다고 할수 있는 매출진척 분석용 대시보드를 만들어야 했는데, 컨설턴트분께서 업무 파악 및 진행하는데 있어서 어려움이 많아보이셨다. 결국 어느정도 진행되다가 개인적인 일까지 겹치셨는지 급작스럽게 프로젝트 롤아웃을 하시게 되었다.
중요한 대시보드인데 또 한번의 어려움에 봉착했었다. 급하게 기존에 계시던 컨설턴트분이 인수인계를 받아 나와 함께 합을 맞춰 나갔다. 매출 진척이니 만큼 그 무엇보다 데이터 정합성이 중요했는데, 모델링하는데 있어서도 어려움이 많았고, 개발 및 검증하는데에도 어려움이 진짜 많았다. WBS에 작성했던 원래 계획보다 지연되기 시작했고, 그 이후에 개발해야하는 대시보드와 같이 개발을 하게 되어 업무가 가증되기 시작했다. 동시에 개발해야하는 대시보드 역시 결코 쉽지 않았던 대시보드였다.
솔직히 야근도 정말 정말 많이 했다. 어떻게든 오픈전까지 해내야했기 때문이다. 매일 같이 택시를 타고 퇴근했던거 같다. 노력도 많이하고 도움도 받아 극적으로 새해를 맞이하면서 2차 오픈(23.01.02)을 할 수 있었다.
오픈 이후 수정사항을 반영하고 그런 시점에서 이번엔 조직개편을 겪게 되었다. 몇년에 한번 있는 조직개편을 이때 겪게 되다니,,,데이터 정합성적인 측면에서 이미 맞추어 운영중인 것을 조직개편에 맞게 수정해야하여 기존에 구현된 로직들을 해치지 않으면서 로직 추가를 해내야했다. 결국에는 요건대로 개발을 완료했고, 이후 문서 작성 및 현업 교육도 하기도 했고, 롤 아웃(23.02.28)을 하는 날까지도 대시보드 수정을 하고 나와 프로젝트가 마무리 되었다.
8개월 동안 LG화학 Salesforce 프로젝트를 하면서 위에도 적어뒀지만, 배운것이 정말 많다. 당시에는 정말 힘든 순간들이 많았으나, 이때 배우고 느낀 것이 정말 많아 이때 배운 것을 토대로 삼성 전자 프로젝트를 하고 있다. 삼성 전자 프로젝트 Phase 1과 3 사이에 LG 화학 프로젝트를 하고 온 것인데, 내가 봐도 나의 역량 차이가 체감될 정도 이다. 이제는 3년차가 되었고, 내가 개발적인 측면에서 PL이 되어 이끌어가고 있는 걸보니 말이다.
다시 생각해봐도 LG 화학 프로젝트를 하고 오길 잘한것 같다. BI 컨설턴트로서 성장을 많이 하게된 터닝 포인트가 된 8개월 동안의 프로젝트였다. 이때 배우고 느낀 것을 잊지 않고 앞으로 좋은 컨설턴트 및 개발자가 되어야겠음을 다짐하며 회고록을 마친다.
1. Summary
- Name : LG Chemical Salesforce & Tableau Establishment
- Period : '22.07.01 ~ '23.02.28 (8 Months)
- Location : IFC & Cocam buildings, Yeoui-do, Seoul
- Customer: LG Chem (Chemical industry)
- Task
- Installed Tableau Server (Window 2016 Server)
- Developed 20 dashboards (sales progress, sales corporation, C&C (Claim & Complain), customer insight, division attribute)
- Implemented dashboards automation following organizational reorganization
- Developed automated dashboards for authority management by business division and position using data modeling and Tableau User Functions.
- Conducted Tableau training sessions for business users and consultants from the field and PWC (Price Waterhouse Coopers).
- Data Source : Salesforce
- What I learned and felt
- Experienced Salesforce Sales Cloud
- Experience the overall process of Salesforce Sales Cloud
- Enhanced communication skills
- Improve communication skills through coordination of requirements with performers and collaboration between project team members
- Developed tableau dashboards with Salesforce Objects as a data source
- Developed dashboards by connecting Salesforce directly without a separate Data Warehouse & Data Mart
- Restrictions
- Minimum cycle of extraction 1 hour
- Incremental extraction disabled when using SOQL (using field hiding)
- Union impossible
- Object not available as secondary data source for Blending
- Formula Field unavailable
- SOQL(Salesforce Objects Query Language)
- Most of them are similar to regular SQL, but have support functions unique to Salesforce
- Managed dashboard and data permisiions using calculated fields
- Tableau supports ismemberof() function, but large organizations have difficulty maintaining computational expressions
- Because there is an organizational information table, use the username() function and organizational information to perform permission management on the data in a computational manner
- Developed of dashboars using Data modeling(Self-Join, Relation, and Blending)
- Dashboard URL parameter Control
- When Embedded, URL parameters allow you to filter data or control options on the dashboard
- Utilize various and complex calculated fields like LOD, Dates etc
- Use advanced calculation expressions of LOD functions, dates, and table calculations to meet requirements
- Development of new types of charts such as parameter behavior, Radar chart, Scatter Plot, Table, etc., and Dynamic Dashboard using basic charts and calculation formulas
- Experienced Salesforce Sales Cloud