6주 동안 실전 프로젝트를 진행하면서 학습한 내용을 기록하고, 팀의 리더로서 프로젝트 매니징 경험을 기록하는 시리즈입니다.
Q1. 데이터 파이프라인 구축에 관한 질문
ES에 데이터 밀어 넣는 여러 방식이 있는데, 대용량 데이터를 빠르게 넣기 위해 가장 효율적인 방법은 무엇이라고 생각하시나요?
방법 1) Spring Batch + bulk API
방법 2) 로그스태시
방법 3) 비츠 + 인제스트 노드
A1. 개발자에게 편한 방식대로 개발하면 된다고 생각합니다.
방법 1) 스프링부트, 스프링배치에서 API를 호출해서 데이터를 땡겨오고, 이걸 bulk API로 ES에 넣는 방식
방법 2) 자바에서 Excel 편집하는 POI 써서 .csv 파일로 변환하고, 그렇게 쭉 쌓아둔 파일을 로그스태시로 한번에 ES에 넣는 방식 → 현재 우리가 사용하려고 하는 방식!
💡시간이 넉넉하게 있다면 1번 방식으로 직접 수집기를 개발하는 것도 좋은 경험이 될 것이다!
Q2. 데이터 수집에 관한 질문
저희 팀의 최종 목표 데이터는 7500만 건이고, 현재 레퍼런스 사이트(키프리스)에 xml 파일 다운로드를 요청하는 url로 request를 보내면서 회 당 5000 건의 데이터를 수집할 수 있게 되었습니다. 현재는 파일로 최대 5000건의 데이터를 받을 수 있어 이 방식이 가장 효율적이라고 판단했는데, 이 방식보다도 더 효율적으로, 더 많은 양의 데이터를 받아올 수 있는 방법이 있을까요?
A2. 없습니다. 이 방식이 최선입니다.
Q3. 데이터 업데이트에 관한 질문
특허 상태를 계속 업데이트를 하기 위해서는 OPEN API를 사용 헤야 하는데, 저희의 예산으로는 서비스 이용수수료를 감당할 수 없습니다. 하지만 등록 정보였다가 공개로 바뀐 특허권을 서비스에 반영하지 못하면(업데이트X) 이는 온전히 서비스 책임인데 이 문제를 어떻게 해결해야 할까요?
A3. 명확한 정보가 아닌 점을 주의사항으로 명시하면 됩니다.
투자 서비스에서도 투자에 대한 정보를 제공할 때 이렇게 주의사항을 명시합니다.
“투자결정에 대한 책임은 전적으로 본인에게 있습니다.”
⇒ 찾아보니 키프리스에도 데이터 제공에 대한 안내사항이 있다. 이런 형식으로 “키프리스에서 제공하는 데이터를 제공하지만, 그 데이터가 변경됐을지도 모르니 다시 한 번 확인하세요.”
라고 주의사항을 명시하고, 키프리스로 리다이렉트 시켜서 사용자가 정보를 한번 더 확인하게 하면 될 듯!
Q4. UI 설계에 관한 질문
현재는 ‘제외 검색 하기’ 체크 박스를 통해 제외 검색을 할 수 있게 UI를 설계했는데, 생각해보니 만든 사람은 알지만 사용자는 이 기능을 어떻게 사용해야 하는지 모를 수도 있을 것 같습니다. UI적으로 어떻게 개선할 수 있을까요?
A4. 도움말이나 가이드처럼 설명을 만들어 두는 것도 나쁘지 않을 것 같습니다.
⇒ ❔버튼 hover 하면 어떤 기능인지 설명이 나오게 하는 방법도 좋을 것 같음!
Q5. 서버 운영에 관한 질문
서버는 DB의 고가용성을 위해 최소 3대를 써서 node를 나누는 것이 좋은 것으로 알고 있는데 구글링을 하여 다른 프로젝트들을 참고 해보니 data node의 경우 램 메모리 16~32 GB를 추천하는 것 같습니다. 그런데 저희의 서버 예산이 한정적인 상황에, 데이터 7500만 개라고 가정하면 서버를 몇 대 쓰는 게 적절한가요?
A5. [client -> ec2 -> nginx -> ES#1~3] 의 흐름으로 가면 됩니다.
- 검색 서비스 개발팀: 서비스를 개발하고, 데이터를 서빙한다.
- 데이터 엔지니어링 팀: 데이터를 수집, 가공하고 ES에 밀어 넣는다.
- 작업 순서:
1) 검색 서비스 개발 팀은 mock data를 만들어서 서비스 쭉 만든다.
→ mock data 만들어주는 라이브러리 많고 다양하다. 그걸 쓰면 된다!
→ 데이터를 화면에 어떻게 뿌려줄 지 논의하고, api 호출을 받으면 데이터를 어떻게 서빙할 지 고려해서 서비스를 개발한다.
2) 정형화된 mock data(예를 들어, json 형태)를 데이터 팀에게 전달한다.
3) 데이터 엔지니어링 팀은 전달 받은 mock data를 보면서 어떤 분석기를 쓰고, 어떻게 가공할 지 결정할 수 있다.
와악!!!!!! 우리 팀 방향 설정은 맞게 했구나!!!! 우리 잘 하고 있구나!!!!!
3일 동안 기획 변경 회의하고, 또 남은 3일 동안 기능 개발한다고 잠도 못 자고 노트북 끼고 살았는데..😭 그래서 컨디션 난조에 힘들어하는 팀원들도 있어서 맘이 너무 안 좋았는데..!!!! 그래도 다 같이 으쌰으쌰해서 달려온 보람이 있다!!!!!😄👍