반응형
1. 발단
전화번호를 마스킹해서 내려주는 비즈니스 로직이 필요
ex) 010-1111-2222 -> 010-1**1->2222
2. 상황
- 마스킹처리를 서버에서 할지, DB에서 처리할지에 대한 고민
- 마스킹 관련 자료 검색시 방법이 다양
3. 실패원인
DB가 마스킹 연산해서 서버로 내려주게끔 개발.
하지만, 리소스 관리 측면에서 DB에서 값을 정제해서 내려주기보단, 서버단에서 처리하는게 맞았음.
4. 힌트
이전에 컬럼 합성 데이터 처리에 대해 어느부분에서 처리하는게 맞는지 다양한 곳에 문의해본 결과,
서버단에서 처리하는게 정석이라는 얘기를 들었었다.
5. 처리
검색해본 자료중에 replace를 사용하는 방법도 있었지만, 만약 해당 문자열 패턴이 반복되면,
정책과 다르게 마스킹처리가 되는 부분이 있어 concat을 사용
ex) 010-4572-5757이라면, 57을 **로 replcae하게 되므로 010-4**2-****이 됨
일단 문자을의 1~5번째를 자르고, **를 더하고, 7~11번째를 잘라 반환하도록 query에 작업
concat(str, 0, 4) + ** + concat(str, 6, 10)
그리고 결국 주체를 서버로 이관해서 처리
phoneNumber.substring(0, 4) + "**" + phoneNumber.substring(6, 11)
6. 결과
문제없이 마스킹된 전화번호 출력
7. 느낀점
어디서 로직을 실행시킬지에 대한 근거를 찾을 수 있게 리소스 사용량을 정량적으로 파악할 수 있는 방법을 찾아보자
왠만한 연산은 서버에서 돌리자
반응형
'Debug Log > 삽질기' 카테고리의 다른 글
[짧]WSL 에러( Error: 0x80040326 Error code: Wsl/Service/0x80040326) (1) | 2023.03.31 |
---|---|
AWS) EC2 SSH 접속시 Permissions 0644 for '~.pem' are too open. (0) | 2022.12.11 |
Spring boot) 빌드 실패 오류 (org.gradle.plugin.api-version ...) (2) | 2022.12.11 |
mybatis) int 자료타입 if test 무조건 안타던 문제 (0) | 2022.08.25 |
mysql-mybatis)일정기간별 검색 (0) | 2022.08.21 |