본문 바로가기

회고

2023년 회고

반응형

나도 개발자가 맞을까?

 
카카오에 입사하고 빌링이라는 시스템을 구축하게 된지 몇해가 지나고…
 
PG라는 말을 들어본적이 있는가? PaymentGate 라고 하는데 우리가 쌀국수집에서 쌀국수를 먹고 계산을 하고 영수증을 받으면 이니시스라는 문구를 본적이 있을것이다. 이게 PG다. 즉 카드로 결제하면 그 정보를 가지고있다가 가맹점에게 돈을 주는 시스템이다. 이때 정보를가지고 돈으로 바꿔주는 것을 정산이라고 한다.

이니시스 영수증


 

그래서 너는 뭐하는데?

돈을 벌수있게 해주는 서비스를 만든다. 서비스를 만들고  돈을 벌기 위해서는 빌링시스템이 필요하다.
빌링시스템이란. 내가 컴퓨터로 돈을 벌고싶으면 필요한 시스템인데 한마디로 결제 시스템이다.
 
홈쇼핑 같은 규모가 작은 업자들의 경우에는 쇼핑몰만드는 사람이 PG와 연동하여 결제시스템을 만들수있다. 하지만 업체가 점점 커지게되면 서비스에서 결제시스템을 만드는것보단 결제를 담당하는 부서가 해당시스템만을 만드는게 효율적이다. (이외의 비즈니스 이해관계)
 
카카오에는 하루에도 정말 많은 결제건이 들어온다. 쇼핑,이모티콘,모빌리티 등등.. 이러한 모든 서비스들이 빌링시스템을 이용하고 있다.

이렇게 돈벌어다주는 부서는 유독 장애에 민감한데. 만약 너가 슈퍼마켓을 하는데 손님이 와서 초콜릿을 하나 결제를 할려고 한다.

하지만 카드를 아무리 긁어도 결제가 안된다면 손님은 돌아갈것이다. (매출손실 ㅜㅜ) 이처럼 빌링은 꼭 필요한 존재이면서 장애가 조금이라도 나면 크게 욕먹는 상황이 벌어진다. (그래서 코드리팩토링에 대해서 소극적으로 바뀌는 것 같다. 만약 너가 수정한 한 줄때문에 몇십억 손해가 난다고 한다면 너는 할 수 있겠는가?  => 난 안할듯 ㅋ)
 

빌링은 다음과 같은 서비스를 제공한다.

 

결제

결제시스템은 고객들에게 결제를 쉽게해주는 환경을 제공한다. 여기서 고객은 사업체들이다. 즉 고객들은 PG와 직접 연동할 필요없이 빌링시스템에서 샤샤삭 할 수 있다.
 
결제방법은 정말 다양하다. 카드결제, 핸드폰결제, 계좌이체, 인앱결제, 포인트결제,카카오 페이 결제,쿠폰결제, 복합결제(카드,포인트), 문화상품권결제, 뱅크 계좌인증 결제 등등 정말많다. 이러한 결제 시스템을 딸각 한번에 하게 해준다.
 
이러한 데이터관련 서비스뿐만 아니라 고객과 직접 마주하는 클라이언트 화면단의 서비스들도 제공한다.
 

취소

결제를 할 수 있다면 상품 취소도 할 수 있어야한다. 취소를 진행하면 PG사에 취소를 요청해 실제 고객의 카드가 취소되게해야한다. 하지만 시스템이라는거는 완벽할 수 없는 법. 혹시나 취소가 실패하더라도 자동으로 취소가 될 수 있게 시스템을 구축한다.
 

환불

환불은 취소와 느낌은 다르다. 취소가 실시간 성이라면 환불은 사후에 일어나는 일. 사실 두개가 같으면서도 다른 느낌인데. 환불같은 경우 PG 에게 요청을 하는게 아닌 취소할 수 없는 상품에 대해서 내가 앞으로 받을돈을 고객에게 주는 느낌이다.
 

정산

정산은 위의 결제, 취소, 환불을 하면서 실제 내가 얼마를 벌었고 PG 사에 얼마를 받아와야하는지 하는 행위이다. 이렇게 하면 이런일이 생기는데...
 
PG: 나 너에게 수수료제외하고 3411231231원을 줘야해
나: 나 너에게 수수료제외하고 3411231232원을 받아야해.
 
????? 1원이 어디갔을까.. 이런거 찾는것도 정산에서 하는 일이다.
 

RM

리스크 매너지먼트라고 하는데 어뷰저들을 관리한다. 카드깡을 할려는 사람들 여튼 불법적인 유저들은 결제나 환불이 안되게 해야한다.
 

어드민

이러한 결제시스템은 실제 고객센터에서 관리할 수 있는 화면과 데이터보정을위한 어드민도 제공해야한다.
 

빌링 서비스 (가족결제, 내 결제, 정산센터)

지금 까지가 서비스들이 결제를 쉽게 해주는 시스템이라면은 빌링서비스는 고객에게 직접적으로 도움이되는 서비스를 제공한다.
가족간의 카드가 공유가능한 가족결제 시스템과 실제 결제와 관련된 내역을 조회하거나 설정을 할 수 있는 시스템.
 
그리고 정산을 위한 시스템도 제공한다.
 
해당 시스템을 만들면 되는거 아니야? 라고 생각할 수 있지만 개발만 하기에는 법적으로 어렵다.

개발한 코드, 데이터는 망분리라는 곳에 들어가게 되는데 여기서 개발하는게 정말 어렵다. 분리망에서는 인프라가 제공되지 않아서 필요한 인프라들을 직접 구성해야한다.

농담 아니라 우리서버만 이렇게 되어있음


좋게말하면 여러가지를 한다. 안좋게 말하면 이것 까지 해? 라는 소리가 나오게 된다.

Npm , Gradle 레포 같은 것도 제공되지않아 해당도 직접 구축해야하는 거지같은 이슈와… 쿠버네티스도 사용할려면 직접 구현해야한다. (그래서 자체 쿠버네티스 비스무리한게 있음..)

이러한 것들은 시니어분들이 오랜 노하우 끝에 만들어 주었지만 NPM 같은 것은 직접 구축해서 사용했다. 다른 분들이 하둡같은것도 구성해줘서 사용할 수 있게되었음.

입사해서 가장많이 한거는 레거시 제거인데. 그 동안 중구난방인 시스템을 하나로 합침.

옛날에는 커머스 결제가 필요하면 한사람이 프로젝트 파서 만들고 모빌리티 결제가 필요하면 프로젝트 하나파서 만듬.  이렇게되니 그 프로젝트는 그 사람만의 전유물이되고 다른 사람은 점점 고치기 힘들어짐. (물론 어드민도 그 만큼 계속생기고 해당 어드민을 하나로 모아주는 프로젝트도 나옴 ㅋㅋㅋㅋㅋㅋㅋ)

여튼 이러한 춘추전국시대를 통일하고 레거시 프레임워크를 신규로 전환! 대규모 트래픽을 받기위해서 샤딩도 진행함.

여러사람과 함께 개발하기 위한 멀티모듈로 개발을 진행했고 올해를 끝으로 대부분 통합되어 그 끝을 향해 달려가고 있다.

빌링이라고 하면 다른 무림의 화려한 화산파같은 서비스는 아니고 무당같은 느낌이다.

일하면서 많은걸 배운것 같다.

마지막은 올해 마무리 여행 ^^


 
 
 
 

반응형