Connect
블로그

PPSPAY 백엔드 개발 이야기

사용자가 직접 이용하는 선불폰 충전·결제 서비스

PPSPAY는 선불폰 사용자가 직접 요금을 충전하고 결제할 수 있는 서비스입니다.

가상계좌 발급과 입금 확인부터 충전 처리, 결과 조회, 환불 신청까지 온라인으로 제공하며, PC와 모바일 웹 환경에서 이용할 수 있습니다. 또한 한국어를 포함한 14개 언어를 지원하여 다양한 국적의 사용자가 서비스를 이용할 수 있도록 구성되어 있습니다.

관리자 페이지에서는 충전·결제·환불 내역과 운영 현황을 확인하고, 공지사항과 약관, 다국어 콘텐츠 등을 관리할 수 있습니다.

PPSPAY는 결제와 충전이 직접 연결되는 서비스인 만큼 데이터 처리의 정확성과 안정적인 운영이 중요합니다.

이번 글에서는 PPSPAY의 백엔드 기술 스택과 개발 환경, 그리고 서비스를 개발할 때 중요하게 생각하는 부분을 소개합니다.

우리가 사용하는 기술 스택

PPSPAY 백엔드는 Java와 Spring Boot를 기반으로 개발하고 있으며, 데이터베이스는 PostgreSQL, 캐시와 임시 데이터 저장에는 Valkey를 활용하고 있습니다.

인프라는 AWS(EC2, RDS, S3)를 기반으로 Docker와 Nginx를 사용하며, GitHub Actions로 빌드와 배포를 관리하고 있습니다.

운영 중 확인이 필요한 상황은 Slack을 통해 알림을 전달하고 있습니다.

PPSPAY 백엔드 기술 스택: 언어·프레임워크 Java, Spring Boot / 데이터 PostgreSQL, Valkey / 인프라·배포 AWS(EC2, RDS, S3), Docker, Nginx, GitHub Actions / 모니터링·알림 Slack

결제·충전 서비스를 위한 데이터 처리 기술

PPSPAY는 PostgreSQL을 기반으로 데이터를 관리하며, Spring Data JPA와 QueryDSL을 활용하고 있습니다. 데이터베이스 구조 변경은 Flyway를 통해 버전 관리하고 있습니다.

결제와 충전 과정에서는 외부 시스템과의 연동이 필요하기 때문에 데이터의 정확성과 처리 과정의 추적 가능성을 중요하게 고려하고 있습니다.

외부 시스템과의 통신에는 RestClient를 활용하고 있으며, Valkey와 스케줄러 등을 함께 사용하여 충전 서비스에 필요한 데이터를 관리하고 있습니다.

이러한 기술을 바탕으로 결제와 충전 과정에서 발생하는 다양한 상황에 대응할 수 있는 백엔드 환경을 구성하고 있습니다.

PPSPAY 백엔드 개발에서 중요하게 생각하는 것

1. 결제부터 충전 완료까지의 정확한 상태 관리

PPSPAY는 사용자의 결제와 실제 선불폰 충전이 연결되는 서비스입니다.

사용자가 결제를 완료하더라도 실제 충전이 완료되기까지 여러 단계의 처리가 이어질 수 있습니다. 따라서 각 단계에서 어떤 작업이 진행되었고, 현재 어떤 상태에 있는지 정확하게 기록하고 관리하는 것이 중요합니다.

결제와 충전은 사용자의 비용과 직접 관련된 기능인 만큼, 처리 과정에서 발생하는 상태 변경과 결과를 일관성 있게 관리하는 것을 중요하게 생각합니다.

2. 외부 시스템의 응답 지연과 오류에 대응하는 개발

PPSPAY는 결제와 선불폰 충전 과정에서 외부 시스템과 연동되는 서비스입니다.

외부 시스템은 네트워크 상태나 시스템 환경에 따라 응답이 지연되거나 일시적인 오류가 발생할 수 있습니다. 또한 요청에 대한 응답을 받지 못했다고 해서 실제 처리가 실패한 것은 아닐 수 있으므로, 다양한 상황을 고려해야 합니다.

이러한 상황에서는 단순히 요청을 다시 보내기보다 실제 처리 여부를 확인하고, 중복 결제나 충전이 발생하지 않도록 주의해야 합니다.

정상적인 상황뿐만 아니라 외부 시스템의 응답 지연과 오류가 발생했을 때도 서비스가 안정적으로 운영될 수 있도록 대응 방법을 고민합니다.

3. 유지보수성과 변경에 대응하는 코드 구조

서비스는 새로운 기능이 추가되고 기존 요구사항이 변경되면서 지속적으로 발전합니다.

PPSPAY 역시 결제와 충전, 환불 등 다양한 기능을 제공하고 있기 때문에 하나의 기능을 수정할 때 다른 기능에 미치는 영향을 고려해야 합니다.

백엔드 개발에서는 당장의 요구사항을 해결하는 것뿐만 아니라 이후 다른 개발자가 코드를 이해하고 수정하기 쉬운 구조인지 함께 고민하는 것이 중요합니다.

기능의 역할과 책임을 명확하게 구분하고, 불필요한 복잡성을 줄여 변화하는 요구사항에 유연하게 대응할 수 있는 코드를 작성하고자 합니다.

소통과 협업을 중요하게 생각하는 개발 문화

서비스 개발은 혼자서 모든 기능을 완성하는 작업이 아닙니다. 백엔드와 프론트엔드 등 여러 영역의 개발자가 함께 작업하기 때문에 원활한 소통과 협업이 중요합니다.

개발 과정에서는 구현 방식이나 기술적인 판단에 대해 서로 다른 의견이 나올 수 있습니다. 이때 자신의 의견과 판단 근거를 명확하게 전달하고, 다른 사람의 의견도 열린 자세로 받아들이는 것이 필요합니다.

또한 작업 과정에서 발생하는 문제나 변경 사항을 공유하고 서로의 업무에 미치는 영향을 이해하는 것도 중요합니다.

다양한 의견을 존중하고 함께 해결 방법을 고민하는 태도가 더 나은 서비스를 만드는 데 도움이 된다고 생각합니다.

마무리

백엔드 개발에서는 기능을 구현하는 것뿐만 아니라 실제 서비스 운영 과정에서 발생할 수 있는 다양한 상황을 고려하는 것이 중요합니다.

새로운 요구사항이나 운영 환경의 변화에 대응할 수 있도록 코드의 유지보수성을 높이고 문제 발생 시 원인을 파악하고 개선할 수 있는 구조를 고민하고 있습니다.

웰네트웍스는 서비스 운영 과정에서 얻은 경험을 바탕으로 개발 방식을 지속적으로 개선하며 안정적이고 효율적인 서비스 환경을 만들어가고자 합니다.

목록으로