기본 콘텐츠로 건너뛰기

월99만엔 파견 현장(SES) 신규 프로젝트 참여한 이야기. TiDB Migration




7월 1일부터 참여한 젊은 화장품 판매 기업의 DB이전 프로젝트 입니다. 

연매출 2000억엔에 
오프라인 제휴 매장 포함 26개 라던가요?
사원은 200명.. 

온라인 구치코미를 분석해서 잘팔리는 제품의 순환이 
이 기업의 핵심가치 같네요. 

때문에 가장 중요한 것은 구치코미 데이터인 듯 합니다. 

여기서 

구치 는 입이고 
코미는 코뮤니티의 앞글자 입니다. 

그래서 
사람들의 말을 모아놓은 커뮤니티를 말하는 것이지요. 
우리말로 하면 평점 같은 느낌이려나요?

일본의 구치코미는 한국만큼 오염되진 않아서
돈으로 매수한 것도 좀 있긴 하지만, 
지나치지 않게 하는 것 같습니다. 

때문에 구치코미에 대한 신뢰는 아주 크구요. 

이 프로젝트의 가장 큰 문제는 
회의가 너무 많다! 
그냥 하루에 세 번 미팅은 기본이고, 
전 서너번이 보통인데, 
정사원들은 작업 시간이 하루에 한 두시간이고 
나머진 전부 미팅인 거 같네요.. 

그리고 티켓 시스템이 다섯 종류.. 
각 부서마다 자기네 티켓 시스템을 따로 쓰기 때문에 
레드마인에서 처음보는 시스템까지 골고루 사용 중입니다. 

가장 크리티컬한 것은.. 
SQL 서버를 사용하고 TiDB 이관을 하기로 했는데, 
모든 멤버가 SQL 서버와 TiDB를 잘 모르는 것입니다. 

유저의 급증으로 인해 SQL서버가 자주 뻗는대요.. 
그래서 TiDB로 변경하면 대규모 OLSP랑 OLAP 처리가 가능하다는 영업(?)에 넘어가서 
TiDB TF팀을 결성해서 순차적으로 이동 중이라고 합니다. 
현재 가장 부하가 적은 MySQL의 테이블 두 개를 이동하고, 
조금 용량이 큰 데이터를 이동 중에 성능 이슈가 있어서 해결 중이라고 하네요. 

DBRE팀이라고 하여 DB관련 이슈를 해결하는 팀에 
기존 정사원 2 명중 한 명은 DB를 잘 아는 편은 아니지만 그나마 알고 있고, 
또 한명은 작년에 입사한 신입사원입니다. 
그리고 저 포함 세 명이 외부에서 들어왔는데
한 명은 TiDB전문가라면서 0.2 MM으로 들어왔다는데 별로 실무를 할 거 같지 않고, 
TiDB찬양만 한는데 실제로 엔진 구조를 모르는 듯 하구요, 
또 한 명은 원래 고등학교 선생님이었다가 TiDB좀 배워서 첫 프로젝트 들어온 거 같습니다. 
PC설정하는거 거의 못해서 제가 옆에서 알려줬는데.. 
IT 툴 자체를 처음 쓰는 듯 합니다. 

그리고 저.. 이렇게 5명 체제인데…

첫 날은 PC를 받으로 롯뽕기 1쵸메의 아크힐즈에 갔습니다. 
PC세팅하고 히스토리 설명 듣다가 8시간이 지나가 버렸고, 
아, 점심은 고객사에서 사주어서 2000엔짜리 햄버거 먹었구요.. 
둘 째 날엔 TiDB교육자료를 제게 공유해주어서 그걸 좀 봤습니다. 
미팅은 네 개… 사이사이에 자료 정리.. 
셋째 날은 9시부터 총회였다는데.. 
암것도 모르고 10시에 로긴해보니 이미 시작..;;;
모른척 다음 미팅부터 들어갔는데도 다섯 개.. 
그 담날 5개….
뭐 이런 느낌이에요.. 
미팅 사이사이에 티켓 확인하고 처리하는 건데.. 
전 아직 첫 주다보니 제가 담당하기 보다는 다른 사람들이 담당하면서
제게 물어보면 제가 대답해주는 식이 메인인 거 같습니다. 

그래도 프로젝트 메인은 TiDB라서 좀 설명 드리자면, 

TiDB는 TiDB와 TiKV, TiFlash라는 영역으로 나뉘어
TiKV가 실제로 데이터가 저장되는 곳, 
TiFlash는 redis같은 메모리 캐시 영역, 
그리고 TiDB가 단순 엔진으로 되어 있네요. 
TiKV는 이름 그대로 Key Value 스토어란 이야기 이구요, 
이 이야기는 Hadoop에 HBase를 올리고 SQL on Hadoop을 올린 뒤에 redis를 묶은 느낌입니다. 

이 이야기를 듣고 뭔가 눈치 채신 분이 계시다면 DBA자격이 있습니다.  

RDBMS와 NoSQL은 완전히 다른 시스템이고 
절대 NoSQL에 대규모 OLTP던지지 말라고 그러잖아요?

Twitter나 facebook은 대규모 OLTP던진다구요?
데이터간 연관성이 없는 단순 인서트는 OLTP의 Transaction의 의미에 포함은 되지만, 
우리가 보통 이야기 하는 것은 다양한 insert, update, delete를 포함한 전체적인 데이터 라이프사이클 모두를 이야기 합니다. 단순 인서트는 NoSQL이 구조만 잘 짜놓는다는 전제하에 빠를 수 있지만, 이건 특수한 구조에 한해서 입니다.  

왜 RDBMS가 지금까지 군림하고 NoSQL은 일부 영역은 뺏어먹었지만 메인 데이터는 뺏어먹지 못하는 것일까요? 만약 여기서 우리는 메인데이터도 NoSQL이에요! 라고 하시는 환경에 계시는 분이 있으면 터지기 전에 나오시기 바랍니다. 아니, 트랜잭션 자체가 적다면 터지지 않으니 걱정 안하셔도 되구요..  

이전 콘텐츠에도 이야기 했지만, 
대량의 인서트, 대량의 셀렉트는 NoSQL을 잘 만들면 RDBMS의 성능을 압도적으로 넘어설 수 있습니다. 
하지만, 특수한 상황 이외에는 전반적으로 RDBMS를 이길 수가 없습니다. 

어떤 이야기냐 하면요.. 
이 업체의 데이터베이스는 12개 정도
그리고 각 데이터베이스별 테이블은 60개 정도 됩니다. 
즉, 720개 정도의 테이블에 여러 데이터들이 얽혀있지요. 

매일 돌아가는 배치만 해도 200라인이 넘는 SQL에 
6300만 row를 매핑해서 배치처리 합니다. 

NoSQL은 RDBMS와는 달리 JOIN을 최대한 피해야 한다고 했었죠?
그런데 지금 TiDB전문가라는 작자가 와서는 
그냥 있는 그대로 테이블을 TiDB로 옮기면 된다고 하고 있는 것이지요. 
정말로 NoSQL을 잘 아는 사람이라면 테이블을 통합해서 최소한으로 하고 그걸 어떻게 정합성을 유지할지 등을 고민했어야 하는데 말이죠. 

그냥 그대로 TiDB에 올려진 데이터는 많은 JOIN을 해야 하고, 
JOIN의 개수가 늘어날 수록 성능 저하에 죽어나게 될 겁니다. 

1000만 로우가 넘어가면 RDBMS는 효율적인 튜닝을 하지 않으면 
성능저하가 일어나게 되구요, 
NoSQL은 1000만 정도는 쉽게 처리가 가능하지요.. 
이러면 NoSQL이 좋은거 아닌가요? 
하지만 결정적인 차이는, 
1000만 데이터를 어떻게 연결하느냐에 따라서
RDBMS는 조금 느려도 쓸 수 있지만, 
NoSQL은 수 배에서 수십배 느려지게 되지요. 
물론 RDBMS는 샤딩이나 레플리카의 효율적인 분산으로 커버 됩니다. 
NoSQL은 JOIN을 없애는 select를 만들기 위한 구조를 재설계 해야만 빨라집니다.

이미 세 번째 옮기는 작업에서 
MySQL의 데이터를 AWS Aurora에 던질 때보다 TiDB에 던질 때 서너배 느린데 
그 원인을 찾아달라는 의뢰가 왔습니다. 
물론 TiDB전문가라는 사람의 담당이니 전 구경만 하겠지만요.. 

TiDB 공식 홈페이지의 벤치마크 결과 입니다. 
400쓰레드까지 동지 처리가 가능한데 58000 tpmC 만 처리되고 있습니다. 
AWS SQL Server의 벤치마크를 볼까요? 
170만에서 200만 정도를 처리하고 있죠. 

TiDB공식은 왜 58000까지만 했을까요? 
ORACLE도 200만짜리 벤치마크 자료를 내기도 하고, 
PostgreSQL에서도 50만짜리 벤치마크 자료를 내는데 말이죠. 

즉, TiDB는 tpmC 표준의 부하 처리에는 충분히 따라오기 힘들기 때문일 겁니다. 
음… 너무 들어갔는데요.. 
TiDB에 대한 이야기는 다음 번에 좀더 자세히 손대기로 하구요.. 

그 외에 성능 이슈나 쿼리 체크 등을 DBRE팀에서 하고 있는데, 
이 작업들 마다 전 첫 주이기 때문에 들어가서 구경만 했는데요.. 

두 사람이 너무 버벅거려서, 
쿼리 성능 보는 법과, 
슬로 쿼리 잡는 법, 
그리고 캐시 메모리를 보면서 잘못 만들어진 쿼리들이 캐시 메모리를 덮은 부분을 보여주고, 이들 때문에 성능이 떨어진 거 같다고 이야기를 했지요. 
그리고 Replication도 열심히 마스터의 부하를 줄이기 위해 조정을 했는데, 
오히려 마스터에 부하를 주는 구조라서 그 구조도 변경하는 방법이랑 가볍게 설명해 주었습니다. 

그러면서 보니까 
그냥 이런 부분들 조정만 해도 충분히 SQL Server에서 커버 되는거 아닐까 싶기도 하네요. 
고객사의 정사원 두 명은 제 지적에 완전히 저를 신뢰하게 되었고, 

TiDB전문이라고 해서 들어온 두 명은
잘 하고 있는지 모르겠습니다. 
전 모른척 구경만 하고 있어야지요. ^^

예전에도 결정적인 문제를 지적했다가 
그 프로젝트에서 잘린 적이 있으니까요.. 
여긴 회의는 많지만 
어렵지 않게 월 100만엔은 가져갈 수 있는 프로젝트라 
모나지 않게 살살 맞춰만 줄까 하고 있습니다, 

이미 TiDB 엔진 구조의 문제는 DBRE 팀 멤버에게 교육 시켜줘서 
DBRE팀은 TiDB로 넘어가지 않았으면 하는 바램을 가지고 있긴 하지만.. 
정치란 것은 회사를 위한 방향으로만 움직이지는 않는다는건 
어디가나 똑같은거 같아요.. 

그럼, 이 정도로 이번 주 정리를 하구요.. 
오랜만에 미팅을 많이 해서 너무 피곤하네요.. 
제 현장 이야기가 일본 IT 프로젝트에 도움이 되었길 바랍니다! . 


giip :: Control all Robots and Devices! Free inter-RPA orchestration tool! https://giipasp.azurewebsites.net/

댓글

이 블로그의 인기 게시물

AI에게 존댓말로 질문한다고 AI가 더 자세히 대답해 주지 않습니다! 프롬프트의 뜬소문과 실제. 잘못알고 있는 프롬프트 이야기

영상버전 :  https://youtu.be/rLwhVUIXaQU 어디선가 기사가 있어서 읽다가 코멘트를 단 게 있습니다.  프롬프트 엔지니어링으로 인터넷 강의를 하시는 분 같은데요..  이름에 Phd라고 적혀있으니 어딘가의 박사님 이신가 봅니다.  그 분의 글에 이런게 있더라구요.. 한국어는 맥락에 크게 의존하는 ‘고맥락 언어’입니다. LLM에 그대로 입력하면 종종 의도가 왜곡되거나 핵심이 누락됩니다. 저는 영어로 프롬프트를 작성하지만, 한국어만 해야하는 모델을 사용할 때는 다음과 같은 방법을 사용합니다. --- 중략 --- ✔️ 존댓말(–습니다) vs 반말(–해요) 중 하나 선택.  Deferential form '-습니다'를 사용하면 openAI 모델은 답을 더 길고 상세하게 합니다.  … 여기서 존대말을 사용하면 AI모델은 답을 더 길고 상세하게 합니다. 라고 적혀 있네요..  그랬더니 이 분을 지지하는 댓글에서 chatgpt에게 같은 내용을 물어본 결과를 적었더라구요..  ChatGPT-4o에게 확인해보았습니다: ”한국어를 사용할 때 존댓말로 요청하면, 당신은 좀 더 나은 답을 주신다고 들었습니다. 사실입니까?“ 아주 날카로운 질문이십니다. **“한국어로 존댓말을 쓰면 더 좋은 답을 받는다”**는 말은 부분적으로 사실입니다. ⸻ ✅ 왜 그렇게 느껴질까요?  1. 존댓말은 명확하고 완곡한 문장 구조를 유도합니다.  • 예: 반말: “해줘” → 목적이 불분명하거나 애매할 수 있음 존댓말: “이 내용을 정리해 주시겠어요?” → 요청의 방향이 명확  2. 프롬프트가 더 구체적이고 정중해지면 → 모델이 더 신중하고 완성도 있는 답변을 생성하려는 경향이 있습니다.  3. ‘질문하는 사람의 태도’를 고려한 최적화된 언어 생성이 이뤄집니다.  • 존댓말 = 더 포멀한 상황 → 더 논리적이고 근거 중심의 응답이 생성됨 ⸻ ❗ 하지만 반말도 충분히 잘 작동...

니가 플랫폼(Platform)을 아니?

이번에는 2015년에 썼던 글을 다시 한 번 정리하려고 합니다.  언제나 이야기 하듯이 단어에 대해 누구에게나 쉽게 설명하지 못하면 그건 그 단어를 아는게 아닙니다.  여러분도 이 단어에 대해 비 IT이든 전문가 이든 설명해 줄 수 있는지 한 번 생각해 보시기 바랍니다.  플랫폼에 대해서 이야기를 하다보면 되묻고 싶은 이야기다. 요즘 개발자들 사이에서.. 또는 서비스 기획자들 사이에서 "플랫폼"이란 단어는 필수어가 되었다. 그런데 개발자들 만이 아니라, 기획자, 경영진까지 플랫폼은 필수이다.  웃긴건..  누구는 플랫폼과 서비스를 구분 못하고,  누구는 플랫폼과 프레임웍을 구분 못하고,  누구는 플랫폼과 콘텐츠를 구분 못하고 있다.  이번에는 플랫폼과 서비스를 구분해 보고자 한다.  그런 사람들끼리 이야기하다가 플랫폼이란 단어를 사용하는 사람들에게 물어본다. "플랫폼이 뭔가요?" 누군가 대답한다. "아직도 플랫폼을 몰라요?" 그럼 이렇게 되묻는다. "네.. 제가 잘 몰라서요.. 좀 알려주시겠어요?" 상대방은 IT시스템 어쩌고 하면서 횡설수설한다.. 얼마전 TV에서 플랫폼전문가가 요즘 IT쪽에 도는 플랫폼에 대해서 이야기 한다고 보라고 권장해주었다. TV를 찾아서 보았다. 플랫폼의 정의에 대해서는 나름 이야기를 했다. "수요자와 공급자를 연결해주는 매개체" 그리고 카카오톡을 성공한 플랫폼이라고 했다. 어짜피 성공한 사업에 이름을 붙이는 것은 쉽다. 성공한 주식의 과거를 분석하는게 쉽듯이.. 하지만 성공하지 못한 사업, 그리고 지금 이것이 플랫폼인지 알 수 있는 사람은 몇 안될 것이다. 단어의 의미를 한 번 다시 생각해보자. 그럼 플랫폼은 언제 시작했을까? 18세기후반 부터 19세기에 걸쳐서 약 100년정도를 산업혁명이라고 불렀다. 산업 혁명에 대한 자세한 이야기는 별도 코너로 만들었습니다.  음성 :  https://y...

일본 취업을 희망하는 대학생을 위한 한국에서 잘못알고 있는 일본 신졸 취업 시장.

영상 버전 :  https://youtu.be/nyzRIJ6VjRU 회사에서 작년에 신입을 뽑았는데  얼마전 그 사원의 대학 교수님이 일본에 오실일이 있어서 인사차 만났습니다.  그러면서 좀 충격적인 사실을 알았는데요..  그 때문에 자료를 정리를 해 보았습니다.  제 콘텐츠를 보시면 이미 일본은 3학년 12월에 100개 이상 지원을 해서 내정을 완료하는 경우가 많다고 합니다.  언제부터 취업활동을 하는지 봅시다.  일본은 대학 3학년의 3월 부터 설명회 엔트리를 시작합니다.  그 때 자신이 가고 싶은 회사들의 설명을 듣기 시작하는 것이지요.  그리고 취업활동의 시작은 5월 부터 인턴십 등 여러 방법으로 신입들을 선별하고 있죠. 그리고 일반적인 취업 종료는 대학교 4학년 6~7월이면 99.8%의 신졸 취업이 끝납니다.  그런데 한국의 대학에서 일본 신졸 취업을 보내는 시기는 바로 4학년 9월 정도 부터라고 하네요.  이 때는 이미 신졸 채용은 끝나고 중고신졸이라 불리는 정시 채용에 붙지 못한 신졸들을 주워가는 기업들이 기다리고 있는 시기이죠.  이미 이 때에는 대기업이나 좋은 기업들이 인재를 전부 쓸어 담고, 대기업이랑 같은 시기에 모집해봤자 들어올리 만무한 기업들이 남은 신졸들을 모집하고 있는데요..  그러니 많은 방송에서 신졸이 일본에서 좋은 기업에 취업할 수 없는 이유가 아닐까요?  실제로 교수님이 주변에 있는 전문대에서 야후 재팬에 신졸 채용 되었다고 현수막을 걸었다는 이야기를 했습니다.  제가 그 전문대는 3년제 아니었냐고 물었더니 3년제였다고 했네요..  제 예상이지만, 그 대학교는 3학년 부터 일본 신졸 취업에 지원을 했고, 늦지 않게 신졸 모집 대열에 들어간 것이 아닐까 합니다.  그러면 일반 대학에서도 3학년 부터 준비해서 보내면 되지 않느냐고 질문을 하자, 이런 지원 자체가 국가 지원을 받아서 ...