기본 콘텐츠로 건너뛰기

어서 못된 것 만 배운 개발자들…이 있네요..




제가 보통 개발자 욕을 잘.. 하긴 하지만, 
그렇다고 나쁜 개발자는 일부에 지나지 않잖아요?
모든 개발자를 욕하는 건 아니고 
제 주변에도 일잘하는 개발자들은 많으니 
이런 사람만 되지 않았으면 해서 하는 말입니다.

문제는 그 일부에 지나지 않는 나쁜 개발자를 한국에서 참 많이 봤다는 얘기죠.
그런데.. 그게 한국 개발자만 그런게 아니었네요.. 

1월부터 맡기로 한 농산물 유통 서비스인데요.. 
사장은 일본 사람이고, 개발팀은 모두 타이 사람입니다. 

처음부터 그 타이 사람들이 개발을 해왔다고 하구요..
그런데 타이 사람들에게 유지 개발, 버그 수정등을 던지면
너무 시간이 많이 지체 되어 
신규 고객이 대기하고 있는 상황이라고 하네요.. 

보통은 신규 고객이 들어오면
회원 가입하고 바로 쓰는게 일반적이잖아요?
그게 아니라 신규 고객이 들어오면
며칠에 걸쳐서 서버 작업을 하고 나서 
고객 어카운트가 발급되는 방식이라고 하네요.. 

게다가 뭔가 하나 수정을 요청하면
이런저런 핑계를 대면서 
메뉴의 오탈자 수정에 일주일이 걸리지 않나
풀다운 메뉴의 내용에 항목 하나 더 추가하는데 두 달이 걸려도 
아직도 진행중이라고 그러더랍니다. 

그래서 그 중간에서 기술적인 체크를 하고 말도 안되는 공수를 이야기 하면
태클을 걸고 하는게 제 입장인 거죠.. 
때문에 개발자들이 일부러 어려운 표현 같은거 쓰면
그게 뭔소린지 알거나 말도 안되는건 잘라낼 수 있는 스킬은 필요합니다. 

그런데 문제는 개발자들이 
Github 초대나 서버 어카운트의 공유를 해주지 않더랍니다. 
환경은 Ubuntu에 Proxmox라는 VM및 Container가상화 오픈소스 솔루션을 사용중이고 
DB는 별도 DB에 고객별로 데이터베이스를 추가하는 방식 같네요.. 
그리고 오피스에 라우터를 놓고 보안 설정을 네트워크 장비에서 하는 듯 합니다. 
네트워크 장비 접속 정보 알려달라니까 
자기 개인 어카운트라 줄 수 없다고 네트워크 장비를 공장 초기화 하고 주겠다고 이야기를 해서
그럼 서비스는 어떻게 되냐고 물어보니 서비스는 정지 될거라고 하네요.. 
뭐 이딴 대응이 있는지.. 
보통 네트워크 장비는 관리자 어카운트를 새로 만들어서 그걸 주면 될 것을 
이 장비는 그런 기능이 없다고 하길래
장비 홈페이지에서 매뉴얼 검색해서 관리자 이관 매뉴얼 링크를 줬지요. 
Gitlab을 사용중이길래 gitlab에서 내 이메일 invitation 해달라고 하니까
자기네 보안 폴리시상 월말에나 가능하다네요.. 

그대로 고객한테 전달해서 내가 컨트롤 안된다고 이야기 했더니 
고객이 초기에 자기가 등록한 어카운트를 찾아서 줬습니다. 
그런데 오늘 아침 갑자기 사장이 다급한 목소리로 전화가 오더니
개발자들이 소스를 지우려고 하고 있다고 한다네요.. 
소스를 볼모로 저를 자르려고 하는 듯한 움직임인 것 같습니다.
급한대로 제가 소스랑 데이터를 회피하려고 db정보 등등을 요청하고 있던 중에
개발팀의 불만도 듣고 어르면서
월말까지 깔끔하고 정리하고 관두는 걸로 이야기가 되었는데요..

막 욕이 나오지 않나요?
그런데 이게 태국 사람이라 그런게 아니라
2010년대 후반까지 제가 한국에서 겪었던 이야기 인데요..

벽에 상품 전단지를 실물 크기로 붙이고 바코드를 휴대폰으로 찍으면
바로 주문이 가능한 서비스를 만들어 사람 키만한 상품 전단지를 
지하철에 깔아서 굳이 수퍼에 들르지 않아도 사고 싶으면 벽에 있는 상품 바코드만 찍으면
집에 들어갈 때 배달이 되는 서비스 였지요.. 
2015년 경이었던가 싶네요.. 

미국에서 MBA를 나와서 한국에와서 이 아이디어로 20억을 투자 받고 
개발자를 30명까지 늘렸는데, 인프라 비용이 많이 나와서 
제게 컨설팅을 요청했던 건입니다. 
실제 소스 관리랑 인프라 비용 관리를 위해 정보를 요청하고 
꼼꼼이 관리를 하던 어느날 
사장이 저에게 말했죠.. 
팀 전원이 사표를 써서 저를 자르지 않으면 팀이 관두겠다고 하네요.. 
제가 전날 비효율적인 서버 구조 때문에 태클을 건게 화근이었나봅니다. 
그래서 그날로 제가 잘렸죠.. 

그 뿐인가요?
패션 동영상 쇼핑 서비스로 500억까지 투자를 받은 기업이 있는데
이 서비스가 중간에 멈춰서 소문소문으로 제게 연락이 와서 
바로 들어가서 해결을 해주구요.. 
며칠에 걸쳐서 소스를 분석해서 어떤 소스가 부하의 원인이 되었는지와
그걸 해결하기 위한 구체적인 방안을 개발팀을 모아놓고 설명을 했습니다. 
즉, 코드를 발로 짜서 이렇게 된건데요.. 
다음날 대표가 제게 오지 말라고 하더랍니다. 
개발팀이 단체 사표를 썼다구요.. 

그런데 이 두 개가 끝이 아닌게 문제죠.. 
너무 많아서 하나하나 열거하기 힘들 정도인데요… 

아직 사회 생활 초년생이신 개발자분들!
요즘 윤 모시기 처럼 망해가는 사람이 시키는거 
분위기 때문에 따라서 관두지 마시고
자기 소신껏 옳다고 생각하는 대로 행동하시길
제발 당부 드립니다.

전 회사를 위해서 비효율적인 것을 효율화 시키고, 
비용을 절감해서 회사의 경쟁력을 올리기 위해서 프로젝트에 투입이 됩니다. 
사장들은 절 비싸게라도 부른 이유가 바로 그거니까요. 

그런데 제가 회사를 해먹는 것도 아니고 
제가 효율화 시켜주고 프로젝트 종료하면
결국 개발자들도 다른 좋은 사례도 공부하고 
서비스도 경쟁력이 생겨서 기업 가치가 좋아지니 
남아있는 개발자들도 그 혜택이 가는거 아닌가요? 

왜들 이런지 모르겠네요.. 
아마도 제가 모르는 인간의 감정이나 여러가지 그들만의 사정이 있으리라 
하고 위로를 하면서 돌아서지만, 
지금 그 회사들은 전부 서비스 종료되고 회사도 사라졌습니다. 
당연히 기업 경쟁력을 위해 열심히 노력한들
서비스가 심심하면 떨어지고
인프라 비용이 너무 들면 
다른 가벼운 기업들을 이길 수 있을까요?

2021년 프로젝트 역시 
제가 비용 절감 제안을 하고 들어가서
그 회사 사장님이 인수한 서비스를 연간 2억엔씩 줄여줬잖아요.. 
그게 아니었으면 그 서비스를 인수할 생각도 없었다고 하네요.. 
원래는 연간 수천만엔 적자를 보는 서비스라 매각을 하고자 했는데
사장님이 제게 이거 인프라 비용을 줄이면 얼마나 줄어들겠냐고 해서 
대충 계산해 줬더니 서비스 인수를 결정한 것이거든요.. 

인프라 전문가 라는 것은
단순이 서버에서 명령어를 날리고
백업하고 장애해결 하는 것이 아니라 
이렇게 기업의 인수가치 조차도 바꾸거나 
기업의 미래도 바꿀 수 있는 아주 커다란 역할을 하는 것입니다. 

그런데 개발자들은 왜이렇게 
저같은 사람들을 죽어라 싫어하는지 모르겠습니다. 
그냥 눈치 없고 사회 생활을 몰라서 그런걸까요.. 

그냥 또 푸념이었습니다. 


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...

[Windows]batch 파일로 PC의 Mac Address(맥어드레스) 구하기

아래의 물리적주소는 한글OS일 때 사용하는 것이고,   영문 또는 일본어 OS일때는 ipconfig /all을 해서 맥어드레스에 해당하는 부분의 텍스트를 바꾸어 주면 됩니다.   @echo off for /f "tokens=2 delims=:" %%i in ('ipconfig /all ^| findstr /i "물리적 주소"') do (   echo %%i )