티스토리 뷰
해외 문자를 발송하기 위한 솔루션을 리서치해보니 국내외로 여러 업체가 있는데 국내 업체는 영 탐탁하지 않은 구석이 있었다. 기본적으로 서비스의 얼굴이 되는 홈페이지 자체가 HTTPS를 지원하지 않는 곳도 있는데, 이런 경우에는 해당 업체에 대한 신뢰도가 확 떨어진다. 그리고 DB - AGENT 방식으로 지원하는 곳은 일단 탈락. 발송 인프라 관리의 주체가 유저가 되어서는 안 된다. 이건 혹여라도 AGENT 문제로 장애가 발생하면 입증하는 것도 골치 아프기 때문이다. DB에 문제가 생겼을 때는 더 피곤한데 그 책임이 온전히 우리한테 있게 되니 최소 이중화 구성까지 신경써야 한다. 이러한 이유로 서비스 전체 인프라가 솔루션 업체에서 관리 되는 곳을 찾는게 좋다. 그런 면에서 봤을 때 이런 부류의 서비스를 제공하는 업체를 찾을 때는 무조건 HTTPS API 방식을 제공하는 업체를 1순위로 해야 한다. 가격은 그다음 문제다. 설령 API를 이용하는 방식이 가격이 더 비싸다고 해도 절대 손해가 아니다. 인프라 비용이나 위에서 언급한 상황들을 처리해야 하는 리소스 투입을 생각하면 말이다.
아무튼, 해외 문자 발송을 위해 레퍼런스도 딱히 없는 국내 업체를 뒤로하고 찾은 해외 업체는 plivo( 플라 보 ), twilio( 트윌리오 ) 두 곳이다. 이하 다른 해외 업체는 레퍼런스가 부족하거나 원하는 스펙이 아니므로 배제했다. plivo와 twilio 모두 해외 SMS를 지원하며 세계 대부분의 국가에 천여 개의 통신사를 이용하고 있다. 쉽게 이야기해서 웬만한 국가로는 문자 발송이 전부 가능하다는 점. 다만, 발신자 번호 지정을 하려면 드는 추가 비용이 가볍지 않다는 점을 인지해야 한다. 발신자 번호를 지정하는 경우는 특정 국가의 문자가 차단되는 경우도 있을 수 있고 수발신이 같은 국가이면 엔드유저 입장에서도 거부감이 덜 하기 때문이다.
제공하는 기능은 두 업체가 모두 비슷하고 레퍼런스도 다 굉장하다. 먼저 plivo는 IBM과 ATLASSIAN이 눈에 띈다.
twilio는 더 대단한데 아래 이미지에 있는 AirBnb와 Uber를 제외하고 넷플릭스까지 두고 있단다. 2019년에는 센드그리드를 인수하기까지. 우버에서 자체 플랫폼을 만든다고 해서 주가가 하락하기는 했지만 기술적으로도 안정성이 검증된 회사이다. AWS 위에 인프라가 구축되어 있는데 AWS 서비스 장애 때도 영향을 받지 않았다는 이야기는 인프라 구축의 좋은 선례로 전해지고 있다.
그런 이유로 기술을 하는 사람의 입장으로 아무튼 더 끌리는 서비스는 twilio 되시겠다. 그래서 한번 사용해보기로 했다.
# 서비스 가입
서비스 가입은 꽤 간단하다. https://www.twilio.com/try-twilio 페이지로 접속하고 필요한 정보들을 입력하고 가입을 진행한다. 그 다음은 메일로 인증코드가 오는데 폼에 맞게 입력해주면 된다. 다음 페이지에서는 같은 방식으로 핸드폰 번호를 입력하고 문자인증까지 진행된다. 국가코드를 포함한 번호를 입력하면 되는데 대략 +821012341234와 같은 형식으로 입력하면 되겠다.
이후 페이지에서는 어떤 언어로 개발할 것인지 선택하게 되는데 여기서는 국민 언어 Java를 선택했다. 선택이 끝나면 아래와 같은 콘솔 화면을 접할 수 있게 된다. 화면을 자세히 보면 Trial balance로 $14.50를 사용할 수 있는데 한국으로 문자를 발송하는 경우 $0.047이니 단문 기준으로 대략 300개의 문자를 발송할 수 있는 가격이다. 그리고 Trial number과 ACCOUNT SID, TOKEN 정보의 위치를 확인해 둔다. 이후 개발할 때 사용하게 되는 값이다.
화면 하단에 보이는 SMS Java QuickStart를 클릭하면 아래와 같이 본인이 선택한 개발 언어의 도큐먼트로 친절하게 이동된다.
오른쪽 화면에 있던 코드를 살펴보자. ACCOUNT_SID는 자동으로 설정되어 있으니까 AUTH_TOKEN과 주석으로 수발신자 번호를 입력하는 세 군데를 보면 된다.
// Install the Java helper library from twilio.com/docs/libraries/java
import com.twilio.Twilio;
import com.twilio.rest.api.v2010.account.Message;
import com.twilio.type.PhoneNumber;
public class SmsSender {
// Find your Account Sid and Auth Token at twilio.com/console
public static final String ACCOUNT_SID =
"AC038b41c7c88fa8b5483812e64db10c73";
public static final String AUTH_TOKEN =
"your_auth_token";
public static void main(String[] args) {
Twilio.init(ACCOUNT_SID, AUTH_TOKEN);
Message message = Message
.creator(new PhoneNumber("+14159352345"), // to
new PhoneNumber("+14158141829"), // from
"Where's Wallace?")
.create();
System.out.println(message.getSid());
}
}
Maven에서는 pom.xml 에 아래와 같은 디펜던시를 추가하면 된다.
<dependency>
<groupId>com.twilio.sdk</groupId>
<artifactId>twilio</artifactId>
<version>7.42.0</version>
</dependency>
Gradle을 사용하고 있다면 아래와 같은 내용을 build.gradle에 추가해주면 되겠다.
mplementation group: "com.twilio.sdk", name: "twilio", version: "7.42.0"
모든 설정을 끝내고 발송하면 아래와 같이 단말기에 문자가 수신되는데 상단에 Sent from your Twilio trial account는 문구는 계정을 유로로 업그레이드 하면 제거되는 문구라 신경 쓰지 않아도 된다.
발송된 문자 이력은 콘솔에서 확인 가능하다. 여기서는 SEGMENTS와 STATUS를 살펴보면 되는데 SEGMENTS는 내부적으로 몇 건의 메시지로 처리되었는지를 나타낸다. 위에서 받은 메시지는 LMS지만 요금은 SMS 여러 건으로 처리된다는 것을 알 수 있다. 실제 동남아시아 일부 지역을 기준으로는 장문의 메시지가 LMS로 수신되지 않고 SMS로 나뉘어서 단말에 수신되기도 한다. 그리고 STATUS는 단말에 메시지가 도달했는지 여부를 나타내는 중요한 정보이다.
여기까지 트윌리오를 이용해서 해외-> 국내 문자 발송을 테스트해봤다. 같은 원리라면 해외 어디든 문자 발송이 가능하기 때문에 유용하게 사용될 수 있겠다. 당장 개발에 여력이 없거나 트윌리오의 문자 서비스를 받아보고 싶다면 https://www.twilio.com/sms/api 링크에 접속하면 가입이나 어떤 절차 없이 바로 문자 발송을 테스트 할 수 있다. 하단 이미지에 설명에 있는 것처럼 발송을 하게 되면 샌프란시스코의 날씨 정보가 문자로 수신된다.
# 마무리
이런 부류의 서비스를 찾을 때 해외 업체를 찾아야 하는 현실이 안타깝다. 국내 업체 몇 곳에 통화해봤지만 생각보다 기술적인 상담은 어려웠다. 이런 서비스를 찾으려고 상담을 할 때 서두에 이야기한 것처럼 금액적인 부분도 중요하지만 인프라가 어떤 식으로 구축되어 있는지도 체크하는 필수요소인데 여러 의미로 아직 갈 길이 멀다. 국내 업체도 깔끔하게 새 단장하고 기술력이나 서비스의 고가용성 등 경쟁력을 갖출 수 있는 날이 오기를 고대해 본다.
'생활 > 리뷰' 카테고리의 다른 글
HHKB Hybrid Type-S (해피해킹 하이브리드 Type-S) (2) | 2022.05.13 |
---|---|
난생처음 써보는 인공지능 스피커 : 구글 홈 미니 (0) | 2020.05.10 |
진짜 카카오 티스토리 서비스 개판이다 (2) | 2019.12.11 |
중국에 다녀와보니 (0) | 2019.12.10 |
오픈소스 오디오 편집툴 : Audacity (2) | 2019.05.31 |
- Total
- Today
- Yesterday