About Me
실용적 접근에 관심이 많은 2년차 개발자, 문규성입니다.
[2014.03 ~ 2021.08] 연세대학교 사회학과 졸업
[2022.09 ~ 2023.02] KAIST SW사관학교 정글
[2023.08 ~ 재직 중] (주)웅진 Rental Management Serivce - Backend Developer
최근 관심사
1. Skill : Java Virtual Thread
2. Conference : 2024 프론트엔드 코리아
3. Book : 컴퓨터 밑바닥의 비밀
🗄️ LG전자 말레이시아 WhatsApp 전환 프로젝트
분당 최대 1000+ API 요청 처리하기
-
프로젝트 소개
LG전자 해외 SMS 발송 방식
말레이시아 정부 정책 변경으로 인해 SMS를 통해 URL, 전화번호를 포함할 수 없게 되었습니다.
이로 인해, LG전자의 SMS 발송 서비스를 WhatsApp으로 전환하게 되었습니다.
-
프로젝트 개요
1. 참여 인원 : 2명 (기획자 1명, 개발자 1명)
2. 담당 업무
- WhatsApp API 생성
- 매너타임 예약 발송 Batch 생성
- Failover 시스템 구축
3. 프로젝트 기간 : 3개월
4. 기술 스펙 : Java8, Spring, Tomcat, Oracle, Mybatis
-
WhatsApp API 생성
1. 개발 포인트
- 전송 인터페이스를 생성한 후, 국가에 따라 구현체를 바꿔줄 수 있도록 작성
- OSMS 템플릿 코드와 Infobip 템플릿 코드 분리 할 수 있도록 처리
2. 문제 발생
- 기존 SMS에서 지원하는 예약발송 기능이 WhatsApp에서는 지원하지 않음
->> 발송 시 매너타임을 체크하는 메서드를 추가하여, 매너타임 시 발송되지 않고 아침에 배치로 발송되도록 처리
-
매너타임 예약 발송 배치 생성
1. 필요성
- 기존 SMS에선 인포빕이 제공하던 예약발송 기능이 WhatsApp에서는 제공되지 않음
2. 개발포인트
- 매너타임(오후10시~오전9시)에 생성된 메시지의 경우, 오전9시05분에 발송되도록 배치 생성
3. 문제 발생
- 트랜잭션 처리 실수로 인해, 고객에게 메세지 중복 발송
4. 문제 원인
- 담당자가 왓츠앱 템플릿 내용의 Placeholder를 오입력함에 따라 의도치 않은 부분에서 오류 발생
5. 문제 로직
- try{WhatsApp conn - 발송} catch{} final{update세팅 update(이고객은보냈어요)}
- 발송 완료 후 update 값을 세팅하는 부분에서 오류가 발생
- update 되기 전에 트랜잭션이 롤백되어 배치가 돌면서 중복 발송
6. 배운 점
- 외부API 호출 시 더더욱이 트랜잭션 처리에 주의를 기울여야함, CONNECT 전 값 처리 필요
-
Failover 시스템 구축
1. 필요성
- WhatsApp 미설치 고객 대상 이메일 전송 필요
2. 개발포인트
- 대량 WhatsApp 발송 시 응답 처리
3. 문제 발생
- 고객에게 메시지를 보내는 시간에 일부 API 요청이 타임아웃 남
4. 문제 원인
- 1개의 API 요청을 인포빕에 보내면, 인포빕은 Delivery Report, Seen Report를 보냄
5. 대응 방안
- Seen 리포트를 받으면 전체 로직을 타지 않고, 바로 return 하도록 처리
- DevOps 개발자 분들과의 협업
웹게임 [그게 몸말]
카이스트 SW사관학교 정글 5기 프로젝트
GGMM 그게몸말