전체 글(67)
-
상호 존중: 당연하지만, 중요한 그리고 어려울수도 있는 그것...
최근 과거에 몸담았던 회사의 동료들 사이에서 일어난 일련의 사건들을 통해, 직장 내에서 발생할 수 있는 특정한 도전과제에 대해 생각해 보게 되었습니다. 회사 내에서는 종종 극심한 스트레스와 압박감 속에서도 모두가 열정적으로 업무를 수행해 왔습니다. 그럼에도 불구하고, 간혹 팀의 결속을 강화하기 위한 전략으로, 불필요하게 과거 팀원들을 비판하는 방식이 사용되기도 합니다. 이는 일명 '희생양 메커니즘'이라고 할 수 있습니다.이러한 행위가 단기적으로는 팀워크를 강화할 수도 있지만, 장기적으로는 조직의 문화와 명성에 부정적인 영향을 미칠 수 있습니다. 따라서, 힘든 시기를 맞이한 모든 조직이 이러한 도전을 어떻게 극복할 수 있을지 고민해 보는 것이 중요합니다. 조직 내에서 서로를 지지하고, 각자의 공헌을 인정하..
2024.05.02 -
카프카를 선택한 이유: 높은 내구성과 고가용성, 단일 실패지점을 극복하는 로그 시스템 갖추기
개요 현재 Payment-lab에서 가장 큰 고민은 결제 승인 데이터의 손실을 최소화하는 것입니다. payment-lab에서는 사용자의 결제 승인 데이터의 정합성을 최대한 맞추기 위해, 무조건 PG api의 결제 승인 요청이 성공한 다음에 해당 로그를 DB에 기록하는 방식을 채택하고 있습니다. CA(Consistency, Availablilty)를 최대한 보장하기 위해 결제 승인 프로세스는 동기 방식으로 진행하기에 실제로 결제가 수행되는 시간이 지연될 수 있습니다. 결제 알림의 경우, 사실 결제 승인이 실제로 이루어지기 이전 시점에 수행한다면 사용자의 편의성을 침해하는 경우를 방지할 수 있을 것입니다. PG사의 결제 서비스 자체가 실패하는 경우는 드물고, MySQL과 같은 관계형 데이터베이스는 일관성과 ..
2023.12.09 -
NCP Global DNS: 도메인 구매 및 SSL 적용
업무수행을 위해 ncp에 서버를 배포하여 도메인을 지정하고, ssl을 적용해야할 일이 생겼습니다. 단순 블로깅으로도 충분히 진행이 가능하지만, 이렇게 업무를 진행하면 금방 잊어먹을 수 있으므로 글로 정리하여 되새김질을 해볼까 합니다. 도메인 사전적 의미로 영역이지만, 사실 이 도메인이라는 단어는 종사하는 직종에 따라 매우 달라집니다. 해당 도메인에 대한 내용을 다루는 글은 아니므로 자세한 설명은 생략하겠습니다. 여기서 도메인은 '서비스 제공자의 영역'입니다. 서비스의 구조에 따라 이 영역을 이루는 서버는 단 하나일수도 있고, 여러개일수도 있습니다. 일반적으로 사용자는 DNS라는 서비스를 통해 지정된 웹 url을 통해 접근합니다. SSL(Secure Sockets Layer) pki 기반의 보안 소켓 계층..
2023.12.07 -
payment-lab 기술적 이슈 -3- 결제 이력 및 복구, Logger를 그대로 사용해도 되는걸까?
이 게시글은 payment-lab이라고 하는 결제모듈 연동 사이드프로젝트를 진행하던 중 발생한 기술적 이슈를 해결하기 위해 정리하는 글입니다. 스프링 프레임워크에는 로깅을 직관적으로 사용하도록 도와주는 Log 관련 라이브러리들이 있습니다. 구체적으로는 log4j, logback 등을 사용하지만 스프링에서는 ‘slf4j’ 로그 통합 인터페이스를 제공하는 라이브러리를 통해 로깅을 합니다. payment-lab 에서는 로그를 단순히 애플리케이션의 동작 이력 및 디버깅 참고용으로 기록하는 것을 넘어서, 결제 정산 및 백업 그리고 복구를 수행하는데 활용됩니다. 그래서 처음에는 logback 설정을 통해 별도의 로거를 생성하여 결제 이력을 기록했습니다. logback-spring.xml logs/applicatio..
2023.11.17 -
payment-lab 기술적 이슈 -2- 중복 결제를 막기위한 멱등키 생성.. 사용자가 결제를 확정짓는 시점은 언제일까?
이 게시글은 payment-lab이라고 하는 결제모듈 연동 사이드프로젝트를 진행하던 중 발생한 기술적 이슈를 해결하기 위해 정리하는 글입니다. 결제 모듈을 개발하던 중 한가지 고민에 빠졌습니다.. 바로 사용자가 실수로 중복 결제(일명 따닥이)를 하게될 경우 어떻게 대비할지에 대한 고민이죠. 현재 진행하는 프로젝트는 토스페이먼츠로 결제 연동을 수행하고 있습니다. 토스페이먼츠의 경우 이러한 중복 결제 혹은 취소를 방지하기 위해 멱등키를 제공하고 있습니다. 이러한 멱등키를 적용하는 것은 너무나도 당연합니다. 그러나 그 멱등키를 어떻게 생성해야할까요? 만약 그냥 결제 요청마다 무작위의 uuid로 적용한다면 무슨일이 일어날까요? 사실상 멱등키를 적용하나마나일겁니다. 어차피 결제 요청 한번 할때마다 유일한 멱등키를..
2023.11.17 -
payment-lab 기술적 이슈 -1- 로깅 중 비밀번호 노출의 위험성 및 대비책
회원가입은 기능을 구현하는 것 자체는 매우 간단합니다. 그러나, 회원가입을 안전하게 수행하는 방법을 적용하여 보안을 강화하고자 한다면 그 기능은 점점 더 어려워집니다. 회원가입을 안전하게 수행하는 방법은 여러 가지가 있지만, 저는 그중에서 회원가입 과정에서 로깅을 수행할 때 비밀번호가 노출되었을 때의 위험성과 그 대응방안을 모색하고자 합니다. 먼저 문제가 발생할 수 있는 코드부터 보여드리겠습니다. class AccountRegister( private val accountRepository: AccountRepository, private val encrypt: PasswordEncrypt ) { fun register(email: String, password: String, username: Stri..
2023.11.12