금융권 시스템 운영 및 개발 경험이 전체 경력의 50%가 넘는 현직 개발자입니다.
쉽게 설명드리자면. 제가 쇼핑몰을 하나 만들어서 운영한다 치자면. 가방을 파는데 현재 재고가 10개 있습니다.
연말에 저희 직원들이 너무 이뻐서 가방을 하나씩 선물로 배당을 주기로 하였습니다.
배당 입력 시스템에서 15개를 입력하니. 5개가 모자르기 때문에 선물 입력이 불가능하고 에러메시지와 함께 팅겨져나옵니다.
선물이 불가능합니다. 선물을 주려면. 저도 재고를 5개 확보하고. 시스템에 15개로 수량을 늘려야 합니다. 이것이 기본입니다.
보유수량(재고) >= 판매수량
..이게 아구가 맞아야만 거래가 가능한 것 이지요. 일반 개인이 쇼핑몰을 만들어도 당연히 저렇게 하며. 저런 검증이나 벨리데이션 절차가 없다하더라도. 외부 결제시스템이니 회계와 연동시에 그쪽에서 알아서 벨리데이션에 걸려서 팅겨져 나옵니다.
전체 프로세스는 롤백되고 당연히 입력되지 않습니다. 특히 "상품" 이나 "돈" 과 관련된 시스템은 그 검증 절차나 벨리데이션이 어마어마합니다. 화면에서 또 하고 서버에서 또 하고. 연계된 시스템에서 또 하고 그런 식입니다.
그리고 그것은 하나의 트랜잭션(실제반영)에 묶여서 일어나도록 구현되기 때문에 중간에 하나만 어긋나서 reject가 나게되면
전체가 롤백(취소)되는 구조입니다.
대한민국 어디서도 대기업이나 공기업과 관련된 "금융"과 관련된 시스템들은. 그렇게 만들지 않는 시스템은 없다고 보시면 됩니다. 그렇게 만들고 싶지 않아도. 그것이 강제됩니다.
삼성증권은 자사보유주가 단 1주도 없다 합니다. 아무리 직원이 실수를 해서. 심지어 삼성증권 사장님에게 주식1주를 배당하려고 잘못 입력했어도 당연히 화면에서부터 거부당합니다. 재고가 0 이니까요.
어찌어찌 화면에서 통과가 되었다고 해도 서버 검증에서 오류가 발생합니다. DB에서 자사보유주 수량이 0이기 때문에. 재고가 없기 때문에 판매든 뭐든 사용이 아예 불가능한 것 이지요.
진짜로 만에 하나.. 설사 또 어찌어찌 거기까지 통과되었다고 하더라도.
DB에서 보유수량 정산처리등이 들어가다가 sql 에러등이 날 가능성이 높습니다.
어떻게 내부 DB가 그렇게 업데이트되었다고 가정 하더라도.
그 내역이 외부시스템. 거래소나 타 accounting이나 내역관리 시스템에 입력되기 위해 연계가 들어가는 순간 거기 벨리데이션에서 걸립니다.
야 니네 보유수량이 0인데. 사장님한테 1주를 어떻게 주냐. 하고 말이죠.
근데 이 모든것이 전부 통과되었고 그냥 단순 직원이 오입력한 실수다? 라는 건 말도 안되는 기가차는 상황입니다.
차라리 직원이 실수로 엑셀에다가 100억원이라고 적었더니. 자기 국민은행 계좌에 100억원이 생겼다. 직원이 실수를 저질렀다.
거의 그런 정도라고 보시면 됩니다.
제가 지금 국민은행 인터넷 뱅킹에 접속해서 이체하려는데. 금액란에 "실수로 1조를 입력했더니 진짜로 1조가 이체되었다."
아 내가 실수했네. 이런 정도라고 보시면 됩니다.
삼성, 현대, LG, 3대 통신사. 그 외에 공기업 프로젝트를 해본 IT 개발자들은 전부 아실만한 내용일껍니다.
게다가 특히 금융권. 소위 말하는 은행의 여신 시스템이나. 증권사의 증권, 보험사의 상품증권, 대출등등 돈이 왔다갔다하는 시스템을 잠시라도 운영을 해보았거나 SI개발에 참여하신 분들은 다들 당연히 아시는 내용입니다.
그 사람들. 툭하면 금감원 감사니. 보안감사니. 모의해킹이니 엄청 시달립니다. 특히 저런 벨리데이션은 애초에 수많은 시나리오를 가지고 계속해서 테스트하고 검증을 합니다. 그래야만 그 시스템이 오픈되어서 실제 내부 사용자든 외부사용자든 사용이 가능한 것 이구요.
저런 요구조건이 맞지 않으면 당연히 오픈 불가입니다.
대기업들 공공기업들은 그 절차가 너무 까다롭고. 툭하면 금감원, 국정원등에서 감사하고 체크를 하기 때문에 저런 모든 검증절차가 생략된 채로. 단순 오입력이 통과되는 시스템을. 그것도 "돈", "증권" 시스템에서 존재할 가능성은 단언하건데 0% 입니다.
제가 테스터라면.
배당관리 시스템을 테스트할때 뭐부터 할까요? 아마 배당입력 란에. 천억넣어보고. 배당주식수에 천억주 넣어보겠죠. 그리고 실제 자기들이 보유한 재고보다 많은 수가 입력되었을때 잘 팅겨내는지 확인합니다. 그리고 애초에 보유수량이 있으면 얼마든지 배당이 나갈수 있다하더라도. "너무 큰수". "너무 많은 물량" 인 천억이니 천억주같은건 불가능하게 만듭니다.
MAX값 LIMITED 값을 소스에 아예 하드코딩으로 박아놓아서. 아무리 입력을 준다하더라도. 그 값보다 큰 수를 넘는 값은 소스를 수정하지 않는 이상 그것이 수행되지 않게 합니다.
===
저는.. 이번 사건이 삼성증권 하나만의 잘못이라는 생각이 전혀 안드네요
지금까지 모든 증권사가 이런 짓 했을걸로 보입니다
철저히 수사해봐야합니다
이 사건은 그걸 넘어서는 더 쇼킹한 사건이라고 생각합니다
주식거래의 기본 개념이 깨진거고. 우리나라 증권거래소가 코인거래소 수준이라는 의미죠
그 계좌의 자금들이 최근에 움직인 흔적이 많을 것 같은데 말이죠....
문제의 본질은 우리나라 주식시장의 기본전제가 다 깨진겁니다..
주식은 발행 수만큼만 존재한다. 네이키드 숏은 불가능하다. 이 두개가 깨졌어요..
모든 증권사가 다 얽혔다고 말해도 지금 틀린말이 아니게 되었어요. 우리나라 증권거래소라는 외부기관이 데이터를 받은걸 그냥 검증도 없이 팔았다는건데요.
그랬다는거 인정하는 순간 우리나라 주식시장 폭격맞습니다.
코인거래소들 보면서 분명 코인도 없는데 영업한다고 예상했는데
설마 주식시장에서도 이럴줄은 상상도 못했네요
네.. 주식판이나 코인판이나 도진깨진 인거죠 ㅋㅋ
금융권 시스템 운영개발이 50%가 넘는다는 걸봐선,,, 외주개발을 하시는 분같은데, 비유가 적절하지 않는것도 보이네요.
삼성증권이, 입고전 수량의 합과 입고후 수량을 비교해 주는 로직을 원-트랜젝션으로 구현하지 않았는지는 살짝 이해가는 부분도 있습니다.
증권사에서 마음대로 주식을 팔고, 나중에 사기만하면 결제시점에서 맞춰진다는 소리입니다.
그 이틀간 없는 주식을 파는것도 된다는거에요. 막말로 가상화폐도 이러진 않아요..
다만, 현재의 IT기술로 개인의 잔고 수량을 실시간으로 다 파악할 수 있는가라는 현실적 문제가 있습니다. 아직까진 불가능하다고 보거든요.
사람이 만드는 시스템이니 구멍은 있을수 있다고 봅니다. 워낙에 IT환경이 열악하니, 모든것을 다 검증 하지 못했다고 봅니다.
그런데, 잘못 들어온 수량을 매도친 직원들은 용서가 안되네요.
분명히 동료가 실수 했다는 것을 알았을것인데, 그것을 이용해 사익을 취하려고 했다니.
백번양보해서, 매도친 사람이 멍청한 사람이었다면 이해합니다. 자신이 그 돈을 가질수 있을것이라고 오판했다고 밖에 안보여집니다.
아 그리고, 가상화폐도 거래소 시스템이니 동일하게 공매도 됩니다. 해외에는 되는거래소 있다고 들었어요. 증권거래는 예탁원과 대사 작업이라도 있지만, 가상화폐 거래소는 그야말로 그냥 거래소의 하나의 지갑에서 움직이라는것이라서 잔고가 있는지 없는지 제3자에 의해 검증이 되고 있는지 모르겠네요.
구식에 폰지사기. 스캠이라고 욕먹는 코인들이 쓰는 블록체인을 보세요. 어느 코인이 어디로 갔는지가 다 조회됩니다. 이게 2008년도 논문으로 나온 기술이고 그 이전에도 소유증명에 대한건 충분히 가능합니다.
애초에 시장에서 본인소유에 대한 증명을 못한다는것. 그리고 그걸 팔 수 있고 나중에 채워넣으면 된다는 것 자체가 말이 안된다는거에요
그리고 거듭 말씀드립니다만 우리나라는 대차거래에서 얻은 발행주식으로만 공매도가 가능하며 네이키드숏은 불법입니다.
이걸 단순히 IT적인 프로그래밍 실수로 보시는게 잘못된 것 같습니다. 그 "실수"가 엄청난걸 할 수 있거든요. 걸리지도 않고서요
제가 이걸 IT의 실수라고 보는 이유는 시간이 조금 흐르면, 내부의 제3자나 외부의 제3자에 의해 드러날수 밖에 없는 구조이고 삼증이니, 특정 내부인이 이익을 취할수 없는 구조라고 보기 때문입니다. 이익을 보려면, 내부의 조력자와 검증기관의 묵인이 있어야 하는데, 불가능하거든요.
결과적으론 삼성증권이 상당한 신뢰를 잃었다고 봅니다. 이것이 IT의 헛점, 실수가 아니라, 직원의 도덕적 해이라는 점에서요.
기본 중의 기본이 지켜지지 않은 걸 헛점이라고 볼 수는 없죠. 고의라고 봐야죠.
그리고 직원의 도덕적 해이를 지적하셨는데, 인간의 부도덕, 비윤리 등을 적절히 제어하거나 처벌하기 위해 애초에 법, 시스템이 있는거 아니던가요?? 직원들은 그냥 법대로, 시스템에 의해 대가를 치루게 하면 됩니다.
더 큰 문제는 이 사건이, 말씀하신 것처럼 단순 싱수 인지, 네이키드 숏을 위해 마련해둔 장치였는지 밝히는 일이겠죠.
거래소 설립시 이미 불법으로 규정되어있는 행위를 동작하지않도록 상황과 조건을 구현해야하는건데
그걸 구현안해놓고 사용했다는게 이번에 드러난거잖아요??
구현해야할때 누가 발주하고 기능을 요구했을까요??
IT 실수가 아니라 요구분석 단계에서 이미 결정되었기때문에 제한기능이 구현안된거겠죠.
누가 요구했겠어요? 자체개발이든 아니든 삼성증권에서 했겠죠.
있는 그대로만 보세요.
배당이 잘못들어온 주식을 팔았다! 이거 도덕적 해이의 문제 맞죠. 근데 배당이 왜 잘 못 들어왔는지가 사회적으로 문제가 되는 것이고 배당 잘못 들어온 주식판건 삼성증권 입장에서 나쁜놈인것이라 지금 우리가 상관할바는 아니죠.
주식을 판 직원이 주식에 대해서 더 잘 이해하고 잏었다면 팔고 샀겠죠. 그게 공매도니까요. 주식수만 맞춰주면 되니깐..
그게 공매도 제도라고 쉴드치시는데 공매도에도 절차가 있습니다. 그런 절차없이 내부직원 단독으로 수행했다는 내용인데 그런식으로 쉴드 쳐질 수 없는 내용이죠
특히나 공매도는 아무나 할 수 있는게 아니라 공매도 권한을 가진 사람이 소수로 제한되어있기때문에 기술적으로 관리하기 더 쉽습니다.
위에 비트코인도 없는 코인 거래한다고 하는데 블록체인 기술자체가 그런걸 불가능하게 하는 기술입니다.
블록체인의 그 부분을 뚫을 수 있다면 당장 논문쓰시면 학계에 엄청난 주목을 받을 수 있습니다.
그리고 이어서 전세계 언론에 집중조명 받으시겠죠
진상 조사해서 강력히 단죄해야 합니다.
그런데 예탁원 서버 검증해야 거래가 될텐데 이해가 안되네요
외주 투자정보 가공 쪽이긴 합니다만,
충분히 일어날 수 있는 일이라고 생각합니다.
통상적으로 중 소형 증권사에서는 코스콤에서 제공하는 파워베이스 원장을 사용하고
어느정도 기업 규모 되는 증권사들은 자체 원장 사용합니다.
원장을 한 군데서 일괄 관리 하는것이 아니라서
틀림 없이 배치 잡으로 대사 작업을 통해
중앙 집계 처리 하는 잡이 발생할텐데,
그게 실시간으로 될것 같지는 않을것 같고
장 중 거래가 정산된 회사 내부 원장 정보를 대사 배치를 돌려서 싱크를 맞출것 같은데
그 대사 작업 전에
어떤 연차 안되는 개발자가 만들어 놓은,
사원 일괄 지급용 TR에서 벨리데이션 체크도 안하고
증권사 자체 원장 DB 일괄 업데이트 기능을 수행하는 기능이 있었다면
지금 상황과 같이 사원들이 장중에 ‘임시로 지급받은 사내 내부 원장 데이터’만 이용해서 거래를 할 수 있다고 생각됩니다.
그리고 정산은 일 마감 배치 잡 수행 시 대사되겠죠..
화면단에서 일괄 지급 구분이 콤보 박스나 라디오박스 혹은 스크립트 오류로 원래 금액으로 세팅 되었어야 할 부분이 잔고수로 입력 되어 있었고,
아니다 그 상황 생각할 필요도 없이
그냥 사내 내부적으로 관리하는 원장 정보가 수정되었고, 그리고 그 원장 장보 대사가 실시간으로 일어나지 않는다면
그런 상황이 충분히 발생할 수 있다고 생각됩니다.
제가 위에 쓴 글은 그냥 투자정보 하는 개발자의 ‘잘 모르고’ 하는 이야기 입니다.
제일 잘 아시는 분은 역시 원장 업무 담당하시는 분들이시겠지만 제 생각에는 충분히 일어날 수도 있는 일인것 같아서 써봅니다..
이 글은 현 사태에 대해 시시비비를 가리고자 쓴 글이 아니고 단순히 가능성의 여부에 대한 견해를 밝힌 글이니 혹여나 제 글이 누구를 옹호한다는식의 오해의 소지는 없었으면 좋겠습니다.
삼촌이 엘지 대리점 하셔서 삼성 제품 아무것도 안써요
삼성 개갞끼
장충기 개갞끼
P.S 차세대 개발자들 맨날 업무에 치여서 진도빼기 바쁜 사람들이라서 테스트 케이스 확인 못하고 넘어갈 때 많은걸로 알고 있습니다.
오픈 하고 나서 장애 터지고 귀책 사유 때문에 시말서 쓰고 징계먹고 배상하는 일들 허다합니다.
공공기관이나 금융은 보안 감사 그리고 애초에 근거금 ( 디파짓 ) 등등 기초 자료 대비 제한 사항이나 요소들을 이미 솔루션이나 개발할때 담당자들이 다 알고 넣져.. 그리고 지금 만들어진 시스템이 이미 20~30년이상 기존에 만들어져 오면서 기본 사항 + 추가 제한 요소 그리고 애매한 것들은 예외처리를 거의 다 합니다.
그리고 금융 위주로 개발해온 회사들 / 개발자들 / 솔루션들을 거의 위주로 사용하기 때문에 더더욱 예외 사항이 적용이 많이 되어 있고 적어집니다.
개인적으론 여러 시스템 하다보니 글쓴이 말씀대로 거의 맞지만 경험상 차세대 개발할때 OS 와 솔루션 간의 꼬이는 경우가 가끔 발생하는데... 예전 시스템 솔루션이나 프로그램 포팅하고 차세대로 밎게 변경하고 새로운 환경에 적용하다 보니... 이런 경우에서의 발생하는 에러를 체크 못하는 경우외엔 거의 없다고 보시면 됩니다.
투자정보만 하는터라 원장쪽은 잘 몰라서조금 더 명확하게 말씀해주실 분이 나타나지 않을까 싶은 마음에 적어 보았습니다.
그리고 그 허점을 노려서 충분히 활용했을거라 의심하는거구요
관계사인 삼성생명이 예를 들어 300만주 가지고 있다고 가정하면 평소에는 없어도 공매 하다가 이번처럼 언론에서 문제되면 삼성생명에서 300만주 빌려와서 ... 이것봐 채워 넣었으니 문제없잖아. 나머지 200만주도 관계기관이던 차명계좌건 빌려서 채워 넣으면 정말 아무일도 없다고 봐 줄 수 있나요???
아에 국민연금에 주식 많으니까 거기서 빌리면 되겠네요.
개인도 공매도 풀로 하면서 국민연금 가서 빌릴생각 하면 되고 아님면 증권금융이나 예탁원 가서 빌려오면 되겠네요.
공매도도 문제 또 왜 이런 일을 감행 했는지.. 이번일로 인해 자금이 누구에게 갔는지도 철저하게 조사해야 합니다.
시스템에서 못 걸러서 시스템 문제고 실수다??? 에이 지금이 70년대도 아니고 무슨 이야긴지 듣는 사람이 또 바보가 되줘야 하는건가요?
이해가 안가니 외워야 하나요??? 이건 문제가 아니라고...
총수량 1000개인데 순간적으로 1100주로 만들어서 가상주식 100개 팔아서 이익챙기고 떨어졌을때 100개 되사서 차익실현 후 전산삭제..오늘 장마감후 돌려보니 1000개 문제없네?
세상에 이런 화수분이 어딨어요..
저는 증권쪽은 아니지만 금융회사에서 얼마전까지 근무를 했습니다.
일단 팩트만 먼저 본다면 첫번째, 주식에서 공매도라는 개념과 거래방식은 엄연하게 존재합니다. 일종의 신용거래의 일부입니다. 없는 개념을 가져다 쓴 건 아니고 공매도를 통한 매도는 충분히 발생할 수 있습니다.
두번째, 금융권 전산시스템은 초당 트랜잭션이 수십만건~수백만건씩 일어나기 글쓴분이 말씀하신바와 같이 재고관리가 되지 않습니다. 댓글 단분의 말씀처럼 저녁에 배치잡으로 일괄 보정을 하고, 그 결과를 기초 정보로 반영해두고 매일 그 정보를 바탕으로 시스템이 움직입니다. 물론 대사작업과 원장확인 등은 여기서 확인/점검/검증을 모두 완료합니다.정상적인 경우라고 할때.
세번째, 금융회사는 금융시슽엠과 모니터링 시스템 등 기간계, 정보계, 대외계시스템들이 최소는 수십개에서 수백개까지 크고작은 시스템이 유기적으로 돌아갑니다. 그리고 수십년 전에 개발한 룰과 현재 개발한 룰까지 공존하면서 돌아가기에 필터링하고 체크하는 기능도 많지만 일부 구간에서 장애가 날 가능성은 충분히 내재되어 있습니다.
그러나 이제 몇가지 의구심이 생깁니다.
1. 공매도 방식은 충분히 있으나 주식의 발행수는 엄연히 한계가 존재하고 그 발행주식만큼은 관리하고 있을텐데 그 많은 주식이 아무런 제재없이 매도가 되었다는 것은 이해하기 어렵습니다.
분명 이상신호가 발생했을테고 그럼 이미 대비에 들어가야 하는데 그러한 사후관리가 전혀 없었다는 건 좀...
2. 삼성증권에서 이 공매도 사건이 잘 해결되었다고 하는데 그게 가능한지가 의심스럽니다.
이미 매도가 된 사항, 주식을 매도한 사람, 그럼 그 주식을 매도하기 전에 매도하는 수만큼 주식을 매수해야 하는 상황, 매도한 금액에 대한 차익실현과 회수방안, 그리고 본인의 자산이 아님에도 불구하고 매도를 한 임직원에 대한 징계와 조치, 시스템 운영자의 오류에 대한 조사와 관련자들에 대한 조치 등 이 모든게 단기간에 해결되기가 쉽지는 않습니다.
3. 이 사건에 대해 금감원은 어떻게 조치할 것인가
좀더 철저한 조사와 증거력을 가지고 검증을 해야 할 것 같습니다.
제 상식으로는 그런게 가능할리가 없을 듯한데요.
/Vollago
그런데 실제로는 현금을 배당해야 하는데 주식을 배당한 상황이고, 주식을 배당했기에 실제 보유하지 않은 주식을 배당했기에 공매도가 된 겁니다.
직원들에게 공매도하라고 주식을 준건 아닙니다.
공매도하라고 주지 않았는데 공매도가 되었다는 말씀이신 듯합니다.
그건 결과론이라 공매도에 포함시킬 수 없을 듯해서 질문드린 것입니다.
말씀하신 사측입장에서 본 결과론으로 그런 해석이 가능하다면 반대쪽 입장으로 본다면 주식배당이 공매도하라고 준것과 동일하다는 해석도 가능해서요.
이게 문제의 본질이 아닌데...
냄새가 많이 나네요.
이것이 예탁원검증프로세스(네이키드숏 방지)를 패스하여 실제 금융거래로 이루어졌다는 것이 더 큰 문제인듯 합니다.
(이틀후 발행예정인 주식인 것처럼 해서...상장없이 그냥 공매칠수도 있다는건데...결국은 증권사 양심에 맞기는 프로세스인가보네요 ㅎㅎㅎ)
굳이 실수라고 말해야 한다면....
법으로 금하고 있는 관행(네이키드숏)을 관리하는데 있어서의 실수정도 되지 않을까 싶네요...ㅎㅎ
신뢰로 먹고살아야 할 투자업계에서 이런일이 일어난 이상,
그 후폭풍은 상당할 듯 합니다.
예탁원의 검증프로세스가...증권사A가 대차거래없이 공매칠 수 있는 프로세스라면,
공매단골-외국계를 포함한 대다수의 증권사들도 가능하리라는 상식에 도달하게 되네요.
한편으로는, 공매도 활동이 이번일을 계기로
위축될 수 도 있겠다는 희망적인 바람도 가져봅니다 ㅠㅜ
이번일이 실수였다는 것은 확실히 알겠는데 이걸로 인하여 파생되는 결과는 엄청난것입니다.
기관과 외인이 얼마든지 공매도를 통하여 돈 한푼 없이 주가를 쥐락펴락 할 수 있는 것이니까요.
직원 실수라 하면 넘어가지만 시스템 문제라고 하면 우리나라 망하죠. 삼성이 그거 아니까 태연히 저런 짓 하는 겁니다. 대마불패죠. 가상화폐는 판이 작으니 깨버리지만, 증시는 건드리지 못하는 거 아니까요.
아름다운 대한민국입니다.
이게 이번 한번만이란 보장이 있을까요?
금융=신뢰인데 이게 깨진이상 공매도 원천금지 시키기전엔 신뢰회복 어렵다봅니다
요약하면 시스템 결함은 맞고
그걸 아는 사람이라면 얼마든지 장난칠 수 있는구조며
단순 실수로 치부하려면 자사주 0인 상태에서 공매도 가능했다는 것도 원래 있던 결함인지 또는 의도적으로 놔둔 구멍인지 설명되어야 한다
대충이렇게 이해되네요.
이번 건은 들켰으니 실수는 맞겠지만
이전에 들키지 않고 해먹은 케이스가 얼마나 되는지가 조사되어 공개될 필요가 있어 보이네요.
예탁결제원이랑 거래소 시스템에서 주문이 그대로 처리된것이 더 큰 문제입니다. 예결원에서 막혔어야 정상인데... 이것도 밤에 처리하려나요.
그 정도로 해야 직원, 삼성증권 임직원, 개발자 등에 대해서만 처벌을 하지 만약 다른 사유를 들게되면 사건은 일파만파 더 커지게 됩니다.
연계된 사람들이 분명 있을겁니다 아침부터 쿨병걸린글들 올라오고 니들이 몰라서 그렇지 아무것도 아닌듯 댓글옹호하고 ㅋ
다른거래소도 탈탈 털어야됩니다!!