저번에 나는 만들었다. 무엇을? 결제 시스템을 위한 설계 첫단계를. 기초적인 테이블을 정의했지만, 아직 없는 것들과 문제들이 많이 남아있다. 지금 만든 것은 프로토타입으로 아주 기본적인 기능만 들어가있고, 나는 이제 이것들을 확장해나가며 더욱 많은 것을 넣어야 한다. 예를 들어서 포인트의 소멸기한이면 자동으로 소멸될 수 있게 기한을 정한다든가, 관리자가 쿠폰을 만들고 정해진 수량을 뿌린다든가, 결제 건에 대해서 취소를 요청한다든가 하는 사항들 말이다. 그런 것을 진행할 수 있도록! 이제 다음 스텝을 밟아야 한다. 이번에는 머리가 아주 아주 아주 복잡해지는데, 그래도 어쩌겠어? 해야지. 🎯 01. 보완할 점을 찾아 헤매는 여정아주 기초가 되는 것을 만들었다면, 이제는 그 기초를 기반으로 추가를 해야 ..
분류 전체보기
현재 우리 서비스에서 결제 지원을 하지만, 어디까지나 단건 결제이다. 특히 건별 결제가 특수 상황에만 발생하는 시나리오이기 때문에, 결제 정보를 담고 있는 테이블, 무엇을 결제하고 그것의 금액이 어떻게 되어있는지에 대해 들어있는 테이블 총 두 개의 테이블을 사용했다. 그리고 이번에 포인트 결제로 변경하고 싶다는 말을 시작으로, 첫 걸음을 내딛게 되었다. (살려줘ㅠ) 이제 결제 시스템을 처음부터 만들면서 그 기록을 포스팅해나가며 정리하려고 한다. 🎯 01. 포인트 결제로 전환을 위한 요구사항 수집하기제일 중요하고 중요한 업무... 요구 사항 확인하기! 대표의 요구사항은 다음과 같다. - 신규 회원일 경우에 무료 충전 포인트가 있어야 한다.- 포인트를 충전, 사용을 할 수 있어야 한다.- 쿠폰을 통하..
✨ 원래 내 업무의 주요 일정 중 하나는 데이터 업데이트에 있다. 이것이 자동화가 되어있는 것이 아니라, 한 3분의 1은 수동이라고 봐도 무방하다. 그중에서 나는 특정 사이트에서 파일을 다운로드받고, 그것을 aws s3 버킷에 업로드를 해야 하는 일이 있는데, 이것의 경우 내가 다운 받은 후 특정 양식에 맞게 이름 변경 후에 재업로드를 해야 한다. 특히 윈도우 환경과 다르게 맥의 경우는 동시에 압축이 안 되기 때문에 이전에는 하나하나 직접 업로드를 했어야 했다. 이것을 간략화하여 쉘 스크립트로 한번에 하는 방법을 생각했고, 이것을 만드는 과정을 기록해보고자 한다. 🪡 기본 구조 설정 먼저 작업에 필요한 기본 디렉토리와 변수들을 설정한다. #!/bin/bash# 작업 디렉토리 설정WORK_DIR=..
✨ 오늘은 내가 최근에 겪은 문제이고, 그것을 해결해서 포스팅을 끄적여본다... 내 주요 업무는 데이터 배치를 실행하고, 그걸 관리하고, 데이터를 수집하고 DB를 최적화하는 것이다.. (사실 1인 개발자는 다 해야 돼.) 근데 말이야, 최근에 S3 버킷에서 스트리밍으로 데이터 가져오는 게 자꾸 오류가 난다? 그것도 진짜 다양하게!SSL 인증 세션 만료 문제 🔒데이터 길이 안 맞을 때 예외 처리 못하는 문제 📏접속 불안정 문제 🌐이 세 가지 문제 때문에 정말 머리가 아팠다.. 예외 처리를 만들고 또 만들고, 계속해서 수정했지만... 문제는 끝없이 났고. 정말 절망적이었다. (무려 월요일부터 금요일까지 계속 예외처리만 구성했다.) 최소 이만큼의 예외처리를 만들었고, 더 많은,,, 예외처리 과정이 있다...
✨ 우리 회사에서 주요한 일 중 하나는 정기적으로 데이터에 대한 업데이트를 수행하는 것이다. 아직은 인원이 나 혼자! (온리 원!) 상태이기 때문에 반 자동 형태로 완전한 배치를 만드는 것이 목표인데, 저번에 웹 api를 통해서 데이터를 받아오고, 그것을 정제하는 과정을 만들게 되면서(이것도 기회가 되면 블로깅을 해야지) WebFlux 를 사용했다. 그런데 웬걸? 이걸 사용하니까 배치 프로세스 종료 후 자동으로 8080 포트가 닫히지 않는 것이다! 참고로, 원래 저 어노테이션을 사용하지 않았을 때는 포트도 사용을 하지 않았다(...!) 그래서 WebFlux을 왜 사용하는지, 이걸 사용하고 나서 닫히지 않는 이유가 무엇인지, 어떻게 하면 닫을 수 있는지까지 작성해보고자 한다 🪡 WebFlux ? ..
✨ Spring batch를 만들던 중, 데이터 클래스를 만들어야 하는 시간이 왔다. 한 6년 전에 국비 교육을 들은 개발자들이라면 알겠지만, 그때는 무조건 vo, service, controller, interface로 이루어진 구조를 가지고 왔기에 뇌가 없이 vo라고 만들다가, VO와 DTO의 차이를 조금 더 명확하게 알아야겠다는 생각을 했다. 네. 저 3년차 맞아요. 🪡 VO(Value Object) VO는 값을 나타내는 객체로, 도메인 로직을 포함할 수 있는 특징이 있기 때문에 주로 도메인 모델의 일부로 사용된다. 🐣 특징불변성(Immutability) : VO는 생성 이후 내부 상태가 변하지 않는다. 그렇기 때문에 안전하게 공유되고 캐싱될 수 있다.동등성(Equality) : 내부 값이 같..
✨ 회사에 입사하고 제일 많이 하는 일, 그리고 내가 해야 하는 제일 중요한 일은 데이터를 업데이트 하는 일이다. 스크립트를 이용해 aws 버킷에 있는 데이터들을 가공하고, 스프링 배치를 통해 실행한다. 이 과정을 처음 해보면서 bean과 jobScope의 개념을 조금 더 명확하게 이해할 필요가 있음을 느꼈다. 🪡 Bean자바가 객체 지향 언어라는 것은 누구나 알고 있는 사실이다. bean은 그것에서 좀 더 들어가서, 스프링 컨테이너에 의해 관리되는 것이라고 볼 수 있다. 스프링 컨테이너에 의해서 관리가 되기 때문에 객체를 사용하거나 불러올 때, new 를 이용해서 초기화나 삭제할 필요가 없고, 동일한 역할의 인스턴스를 사용할 경우에 계속 사용하기 때문에 여러 곳에서 동시에 사용할 수 있다. 효율성이..
스타트업에 현재 기존 개발자가 나간 상태, 1인 개발자 나 혼자 남은 상태에서 DB를 봤을 때 상태가 전혀 괜찮지 않았다. FK가 없으면 그것대신 트리거라도 있어야 하는데, 그야말로 그냥 테이블만 띡! 있는 관계형 데이터베이스의 의미가 존재하지 않는 상태인 것이다. 그래서 데이터베이스 리팩토링을 대표님에게 제안했고, 최소 6개월 최대 1년을 받아냈다. 기획과 설계에 약 6개월 이상을 잡고, 실제 설계를 3개월로 잡았으니 기간은 제법 넉넉하다. 현재 서비스가 초기 상태이기에 사용하는 테이블이 9개, 스키마가 100개 이내인 것을 생각해볼 때 지금이 바로잡기에 제일 좋은 시기임은 확실하니까 반드시 지금 해야한다는 생각이 가득했다. 또, 내 최종 목표인 DBA가 되기 위해서 엄청난 기회라고 생각한 것도 있다!..