본문 바로가기
인생/책읽기

[책 읽기] 비전공자를 위한 이해할 수 있는 IT 지식

by thomasito 2020. 11. 7.
반응형

https://book.naver.com/bookdb/review.nhn?bid=16415934

 

비전공자를 위한 이해할 수 있는 IT 지식

IT 시대의 필수 교양서우리는 매일 스마트폰으로 메시지를 보내고, 컴퓨터로 일을 합니다. 또 음식점에서 키오스크로 주문하고, 가상현실에서 게임을 즐깁니다. IT는 더 이상 전문가들만의 이야

book.naver.com

[한줄 요약]

IT 개발에 대해 1도 모르거나 IT 개발업무에 관련되어 있는 모든 사람들을 위한 책

 

 IT 라는 이 단어는 평생 나와는 매우 거리가 먼 것이었다. 나의 전공은 사회학과 금융공학이며 IT와는 전혀 거리가 멀었다. 하지만 인생은 내가 생각하지 못한 것과 만나게 되는 법이다.

 

 입사 후 IT 개발업무를 부수적으로 맡게 되었다. 우리가 원하는 기능을 IT에 전달하여 개발을 요청하고, 개발내용을 테스트하는 업무였다. 처음에는 정말 이해할 수 없는 말들이 너무 많았다. '원장'이니 'API'니 '서비스를 던져주세요' 이런 말들이 무슨 말인지 당최 몰랐다. 다행히 IT 출신 차장님 분 덕분에 많은 것들을 이해할 수 있긴 했으나 그래도 항상 IT 개발의 큰 그림을 제대로 이해하진 못했다. 혹시 파이썬 같은 코딩을 배우면 이해도가 높아지지 않을까 했지만 그건 다른 업무에서는 도움이 되었지만 IT 업무를 이해하는 데 전혀 도움이 되지 않았다.

 

 그런데 이 책을 읽고 IT에 대한 이해도가 훨씬 늘었다. 공부 차원에서 책에 나온 내용 중 간단한 내용을 정리해볼까 한다. 그리고 내가 회사에서 겪었던 금융 IT 이야기도 좀 덧붙여 본다. (이 이야기는 IT 비전공자인 본인이 작성한 사항이므로 제대로 이해를 못한 내용이 있을 수 있습니다. 혹시 그런 사항이 있으면 알려주시면 감사하겠습니다 ^^)

 

1. 클라이언트(Client)와 서버(Server)

 난 이 책을 읽기 전까지만 해도 서버라는 것이 '컴퓨터'인지 몰랐다. 보통 우리가 서버라고 하면 이렇게 겁나 웅장하고 뭔가 전기선들이 엉켜있는 이미지가 떠오른다. 

문과생은 단 한발짝도 들어갈 수 없을 것만 같다.

 컴퓨터란 쉽게 말해서 끊임없이 뭔가를 요청하고 받는 작업을 시키는 기계이다. 예를 들면 우리가 구글이나 네이버에서 검색하는 행위 자체가 뭔가를 요청하는 것이고, 그 검색의 결과물로 화면에 떠오르는 것이 누군가가 그것을 던져주는 것이다. 쉽게 생각하면 클라이언트는 영어뜻 그래도 '손님'이고 서버는 영어뜻 그래도 '종업원'이다. 서버는 클라이언트가 뭘 요청하면 데이터베이스에서 찾아서 갖다주는 '종업원' 컴퓨터이다. 서버는 컴퓨터였다!

 

 그런데 카카오 뱅크를 생각해보자. 하루에도 수천만명의 사람들이 이체를 한다. 카카오톡의 서버(컴퓨터)는 이렇게 수많은 클라이언트를 상대해야 하므로 그 크기가 무시무시하게 클 수밖에 없고, 24시간 돌아가고 있는 것이다. 결국 클라이언트는 데이터를 달라는 컴퓨터이고 서버는 데이터를 찾아주는 컴퓨터이다.

 

 아주 간단하게 친구한테 카톡에서 사진을 보내는 것만으로도 이런 과정을 거친다.

1. 친구 A는 카카오톡의 서버에 사진을 던져달라고 요청한다.

2. 친구 A는 카카오톡의 서버에 사진을 업로드 한다.

3. 친구 B는 카카오톡의 서버에 친구 A에게 받은 사진을 던져달라고 요청한다.

4. 서버에 업로드된 사진을 던져준다.

 

쉽게 말하면 서버에 사진을 업로드하고, B가 서버에게 사진을 달라고 요청하면 던져주는 것이다.

 

2. API가 뭘까? (Application Programming Interface)

 API는 소프트웨어가 다른 소프트웨어의 기능을 쓰기 위해 중간에 필요한 체계이다. 특정 기능을 사용하기 위해 주소로 요청으로 보내면 응답을 해주는 소프트웨어끼리의 인터페이스라고 보면 된다. 그냥 이렇게 생각해보자. 여기 손님과 쉐프가 있다. 쉐프는 나름의 요리를 하는 방법과 프로세스가 있다. 하지만 손님은 요리 방법이나 프로세스는 모른다. 손님이 다만 원하는 것은 '스파게티' 라는 Input 값을 넣었을 때(요청) '맛있는 스파게티'를 Output으로 받으면(응답) 그만이다. 손님이 원하는 것을 가져다주는 역할을 하는 것이 API라고 이해하면 된다.

출처 : https://moonspam.github.io/What-is-an-API

 예를 들어 우리가 일상적으로 접할 수 있는 주식매매 MTS를 보자. 우리가 보는 MTS는 안드로이드, iOS 소프트웨어로 구성되어 있으며 회사의 메인 시스템은 다른 언어로 구성되어 있다. MTS에서 특정한 정보를 얻기 위해서는 회사의 메인 시스템에서 데이터를 가져와야 한다. 그런데 두 가지가 다른 소프트웨어이기 때문에 MTS는 원하는 정보를 가져오기 위해서 미리 정의한다. 내가 MTS에서 '계좌번호', '비밀번호'를 메인시스템에 Input으로 던지면, 메인시스템은 Output으로 '잔고', '수익률', '평가손익' 데이터를 MTS에 던져주는 것이다. 이런 체계를 바로 API라고 한다.

 

ㄱ대략 이런 느낌이다

 최근에 공공 데이터를 사용할 수 있도록 공공 API가 되게 잘 개발되어 있다. 부동산 실거래가 같은 정보들이 되게 유용하다. 정부 내부에 실거래가들을 어떻게 관리하는지는 모르지만 다만 나는 '날짜', '지역'을 넣었을때 실거래가 정보를 받고 싶을 뿐이고 이 것을 도와주는 것이 바로 공공 API이다. 우리나라는 공공데이터 포털 사이트에서 이러한 공공 API를 제공하고 있다. 나도 실거래가 분석 시스템을 돌려본 적 있는데 나중에 한 번 포스팅 하도록 하겠다.

 

3. 나의 금융 IT 경험담  

 우선 내가 경험한 금융 IT에 대해 간단히 설명해볼까 한다. 금융 IT도 되게 넓은 영역이긴 한데 나와 같이 일했던 팀은 회사가 매매하는 유가증권 매매시스템을 개발하고 개선하는 팀이었다. 고객들이 주식을 매매하는 시스템을 개발하는 팀이 아니고, 회사가 자기자본을 운용하기 위한 시스템을 만드는 것이다.  그래서 각 담당자마다 자신의 유가증권이 있어서 과장A는 국내주식, 과장B는 해외주식, 과장C는 원화채권, 과장 D는 외화채권, 차장 E는 국내파생상품 이런 식으로 나누어져있다. 그리고 이게 IT가 다 같은 시스템을 쓰고 있는 것은 아니고 외환결제나 장외파생상품같은 경우는 또 다른 시스템을 쓴다.

 

 우리는 이 중에 채권과 유사한 상품을 다루는 팀이었다. 보통 개발을 하면 3개의 주체가 있다. 첫 번째는 개발을 원하는 '현업', 회사의 시스템을 담당하는 '원장', 회사의 시스템에서 데이터를 가져가는 '모바일/홈페이지'  이렇게 나누어진다.

쉽게 써보려 했는데 마음처럼 안 된다 ㅠ

 각자의 역할을 설명하자면 '현업'에서는 우리가 개발이 왜 필요한지 그리고 그 개발을 어떻게 진행해야 할지에 대한 개발안을 작성하여 전달한다. 보통 엑셀로 작성하기도 하는데 현업은 IT를 완전히 이해하지는 못하기 때문에 일단 화면과 화면 구동방식을 그려서 준다.

 

 이걸 받은 '원장'메인서버 개발이 가능한지, 개발일정이 얼마나 잡히는지를 분석해서 이야기해준다. 아무래도 회사 시스템의 전문가들이다 보니까 개발을 쉽게 하기 위해서 이런 저런 제안들을 해주고는 한다. 결국 기본적인 화면과 화면로직을 회사 시스템에 먼저 심는데, 이거를 '원장'이라고도 하고 '서버'라고도 한다. 시스템이라는 게 말하자면 회사의 메인 서버(주전산기)인 것이라 매우매우 소중하고 중요하게 다룬다.

 

 그리고 이 개발건이 고객이 매매하는 것과 관련되는 경우 '모바일/홈페이지'가 들어온다. 사용자 입장에서는 모르겠지만 사실 모바일 시스템은 안드로이드와 애플의 iOS를 각각 따로 따로 만든다. 모바일에서 우리가 보는 데이터는 대부분 이미 회사의 시스템에 다 있는 데이터를 가져와서 보여주는 것이다. 그런데 모바일 어플리케이션과 회사 시스템은 다르기 때문에 중간에서 모바일이 요청하는 데이터를 회사 시스템에서 떠올 수 있는 일종의 중간층이 필요한데 이것을 API라고 한다. API에 원하는 Input 값을 던지면 원장이 메인서버에서 그거에 맞는 Output을 가져다 주는 거라고 보면 된다.

 

큰 그림을 보는 것이 중요하다.

 회사생활을 하다보니 큰 그림을 보는 것이 정말 중요하다고 느낀다. IT 같은 경우도 내가 기획, 개발, 테스트를 모두 진행할 수는 없다. 결국 큰 그림을 이해하고 있어야 개발자랑 대화도 되고 원활히 업무를 진행할 수 있다. IT 업무를 하기 위해서 모두가 개발자가 될 필요는 없고, 어떻게 보면 파이썬을 배우기 전에 이 책을 먼저 보는 것이 맞다고 생각한다. 혹시 금융 IT에 관심이 있거나 질문 있으신 분은 질문 주시면 제가 IT 담당자는 아니지만 아는 범위안에서는 답변해드려보겠습니다.

 

반응형

댓글