기본 콘텐츠로 건너뛰기

giip를 쓰면서 문득 떠오른 추억..

이번 프로젝트도 마찬가지로 인프라 관리는 #giip 를 이용하고 있다.

2016년 경 giip를 이용해 투자자들을 찾았을 때가 기억난다.
모든 #투자 자들은 B2C를 선호하고 2년뒤에 보이는 폭발적인 매출 성장을 바란다. 그리고 B2B의 특성을 모르고 몇명의 유저가 모이는지를 물어본다.
비교 대상을 요구했을 때 내가 현재 없는 혁신적인 기술이라고 얘기하자 모 투자자는 얘기했다.

" 그렇게 잘났으면 왜 실리콘 밸리 가지 않고 여기서 투자자를 찾나요?"

기술 투자 전문이라는 그 투자자의 말이었다.
그리고는 투자를 포기하고 아주 오랜 기간을 두고 혼자서 만들어가고 있다.

그러다 보니 비슷한 서비스가 나왔다.

#Jenkins 는 giip의 CQE(Command Queue Engine)부분에서 따온 듯한 느낌이다.

#Terraform 은 giip의 Script Repository기능을 이용한 멀티 디플로이 기능으로 대체 가능하다. 물론 어떠한 클라우드라도.

요즘 #Azure #LogAnalytics 를 보고 있는데 giip의 #KVS(Key Value Store)와 매우 흡사하다. 물론 giip의 KVS역시 #SQLServer 의 #JSON #Query 를 참고로 만들었긴 했지만..

시대의 필요가 있으니 이러한 기능을 가진 서비스들이 많이 나오고 있다. 한국이 세계적인 기술 개념을 만들 수 없는 이유를 생각해보면 ..

- 투자자들은 장기적인 혁신보다는 눈앞의 숫자만을 바라본다.
- 기술이 뛰어난 사람들은 이미 한국에 없다.(한국에서 쫓겨난다)
- Made in Korea에 자부심이 없다.
- 깊이있는 연구를 하면 오타쿠 취급을 받는다.

내가 Intel CPU와 AMD CPU의 코어 기술을 설명하자 주변이 싸늘해진 적이 있다.
가끔은 특정 Block chain 서비스의 합의 알고리즘을 분석해달라고 요청이 오면 분석해서 안정성과 유사 체인등의 특성등을 알려주면, 그것 보다 돈이 되는지를 물어본다.

giip는 2007년에 만들어져 이미 #클라우드 의 VM 환경 및 동적 IP를 가진 서버도 대응하는 혁신적인 관리 툴이었다. (그 때까지 어떠한 시스템 관리 툴도 IP가 베이스였기 때문에 바뀌는 IP를 체크할 수 없고, 로컬 네트워크 기반 제어라 클라우드의 네트워크 제약이 강했다. )
2011년 한국 최초의 퍼블릭 클라우드 서비스를 런칭할 때도 참여하여 타 기업보다 좋은 매출을 끌어올려줬는데, 나는 이미 5년 이상 클라우드 인프라를 관리한 경험이 있고 클라우드의 개념을 깊이 있게 정립하여 서비스의 방향성을 잘 잡았기 때문이다.
그 노우하우가 전부 집약되어 있는게 giip이다.

15년이 지나도록 giip의 코어 데이터 구조는 바뀌지 않았다.
UI는 트렌드에 맞추어 #bootstrap 으로 변경은 되었지만..

예전에 #softbank robot #pepper 를 giip로 제어하는 구조를 보여준 적도 있는데, 실제로 giip는 인터넷이 연결된 어떠한 디바이스라도 제어가 가능하고 어떠한 보안이 되어 있어도 제어가 가능한 구조를 가지고 있다. (물론 완전 격리된 상태라면 불가능하지만)
가끔 술자리에서 농담으로 내가 #스카이넷 에 가장 가까운 시스템을 가지고 있다고 말하기도 했다. ^^

수 년 전 #UiPath 를 giip에서 제어하면서 #Orchestrator 없이 통합 제어 를 보여주고 나도 필요해서 몇 군데는 아직도 giip로 UiPath #워크플로우 처리를 하고 있다. 모바일 디바이스에서 원하는 워크플로와 디바이스 그룹을 선택해서 내려보내면 그 그룹 중에 남는 PC가 알아서 자기 업무를 진행하고 보고한다.

이젠 포기하고 혼자 잘 쓰고 있지만,
기술을 사랑하는 사람들에게는 모든 기술을 공유하고 발전시켰으면 좋겠다는 생각을 한다.

그냥 혼자 잡담이었습니다. ^^

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

댓글

이 블로그의 인기 게시물

Alter table 에서 modify 와 change 의 차이 :: SQL Server

두 개의 차이를 모르는 경우가 많아서 정리합니다.  modify는 필드의 속성값을 바꿀때 사용하구요.. change는 필드명을 바꿀떄 사용합니다.  alter table tbbs modify bNote varchar(2000) NULL; alter table tbbs change bNoteOrg bNoteNew varchar(2000) NULL; change에는 원래 필드와 바꾸고 싶은 필드명을 넣어서 필드명을 바꾸는 것이죠~ 더 많은 SQL Server 팁을 보려면  https://github.com/LowyShin/KnowledgeBase/tree/master/wiki/SQL-Server giip :: Control all Robots and Devices! Free inter-RPA orchestration tool! https://giipasp.azurewebsites.net/

책에서는 안 알려주는 대규모 트래픽을 위한 설계

음성 버전 :  https://www.youtube.com/watch?v=ZZlW6diG_XM 대규모 트래픽을 커버하는 첫 페이지 만드는 법..  보통 DB를 연결할 때 대규모 설계는 어떻게 하시나요?  잘 만들었다는 전제 하에 동접 3000명 이하는  어떤 DBMS를 사용해도 문제 없이 돌아갑니다.  여기서 이미 터졌다면 이 콘텐츠를 보기 전에 DB의 기초부터 보셔야 합니다.  아.. 개발 코드가 터졌다구요? 그럼 개발자를 때리셔야지요..  만약 3000명을 넘겼다면? 이제 Write/Read를 분리해서  1 CRUD + n개의 READ Replica를 만들겠죠?  보통 Read Replica는 5개가 최대라고 보시면 됩니다.  누가 연구한 자료가 있었는데...  6번째 레플리카를 만든느 순간 마스터가 되는 서버의 효율 저하 때문에  5번째에서 6번쨰로 올릴때의 성능이 급격히 줄어든다는 연구 결과가 있습니다.  때문에 Azure에서도 replica설정할 때 5대까지 밖에 설정 못하게 되어 있지요.  유저의 행동 패턴에 따라 다르긴 하지만,  1 CRUD + 5 Read Replica의 경우 동접 15000명 정도는 커버 합니다.  즉, 동접 15000명 에서 다시 터져서 저를 부르는 경우가 많지요..  이 때부터는  회원 DB, 게시판DB, 서비스DB, 과금 DB 등등 으로 성격, 서로의 연관도에 따라 나누기 시작합니다.  물리적으로 DB가 나눠지면 Join을 못하거나 Linked Table또는 LinkDB등의 연결자를 이용해서 JOIN이 되기도 합니다.  그에 따라 성능 차이가 생기지만 가장 중요한 포인트는  서로 다른 물리적 테이블의 JOIN은 인덱스를 타지 않는다!  라는 것입니다. 즉, JOIN할 테이블들을 최소한으로 만든 뒤에 JOIN을 걸지 않으면 NoSQ...

BI의 궁극판! Apache Drill을 써보자!

사실 Apache Drill 은 BI(Business Intelligence)라고 부르는 것 보다는 단순 데이터 연결 엔진이다. https://drill.apache.org/ 하지만 내가 왜 극찬을 하느냐면.. DBA로서 항상 문제가 되어왔던게, 이기종 데이터의 변환이나 처리였다. 포맷을 맞추는데 엄청난 시간이 걸리고, 데이터 임포트 실패가 무수하게 나고.. 한 번 잘못 데이터를 추출하면 다시 조정, 변환, 추출하는데 시간이 많이 걸린다. 그런데! Apache Drill은 그냥 RDB를 CSV랑 연결해서 조인해서 통계를 낼 수 있다. 그것도 표준 SQL을 사용하여! 예를 들어, CSV의 세 번째 컬럼이 price 이고, 물건의 판매이력을 PG사에서 CSV로 출력 받았다. 우리 DB와의 검증을 위해서는 수동으로 Import를 한 뒤에 포맷이 안맞아 잘리는 데이터가 있다면 다시 맞춰주고, 재 임포트를 수십 번, 그리고 나서 겨우 들어간 데이터를 조인하여 빠진 데이터를 분간한다. 숫자가 적다면 개발자가 개발로 처리할 수도 있지만, 건수가 하루에 300만건 짜리라면.. 한 달 온 파일은 9천만 건이다. 프로그램으로 고작 처리하는 것이 초당 500건. 거의 20만초, 에러 없이 약 56시간.. 에러가 생기면 다시 56시간.. ㅠㅡㅠ 이런게 현실이기 때문에 쿼리 말고는 방법이 없다. apache drill 의 진면목을 보자! 이번에는 좀 범용 적인 MySQL DB와 붙여 보자. . 난 이번에는 Mac에서 작업을 했기 때문에 그냥 다운 받아서 풀었음.. https://drill.apache.org/download/ 여기서 자기 OS에 맞는 버전을 받아서 설치하시길.. 압축을 풀고 나면 MySQL 커넥터를 붙여야 한다. https://dev.mysql.com/downloads/connector/j/5.1.html 여기서 다운로드 이런 커넥터 들을 붙일 때마다 콘피그를 수정해 줘야 하지만, 몇 번만...