마이소켓을 소개합니다.목위일
I'd like to introduce a new project I'm calling Mysocket.io. Before we dive in, a bit of background.
충실한 독자들은 내가 대량의 데이터와 대량의 요구를 수용할 수 있는 글로벌 인프라 서비스를 구축하는 것을 좋아한다는 것을 안다.이런 건축 서비스는 통상적으로 우리가 몇 가지 도전을 해결해야 한다.고려해야 할 사항은 고가용성, 확장성, DDoS 보호, 모니터링, 로그 기록, 테스트, 배치, 사용자 및 백엔드 API, 정책 관리(사용자 선호) 및 배포, 라이프 사이클 등입니다. 이 모든 것은 비용에 주목하고 복잡성을 최소화해야 합니다(이것은 사실상 인위적이고 운영 비용입니다).
이 주제들을 실험하기 위해서, 이 실험들을 정착시키는 항목이 필요하다.내가 계속 일할 수 있는 것들, 이렇게 하는 동시에 전체적으로 프로젝트를 개선할 수 있다.현재 시간의 흐름에 따라 많은 프로젝트를 시작했지만 최근에 더 많은 시청자와 공유하고 싶은 프로젝트는 mysocket.io입니다.공개적으로 방문할 수 없는 서비스에 안전한 공공 노드를 제공하는 서비스.
mysocket이 바로 전형적인 예이다.io는 노트북에서 웹 서비스를 실행하는 데 도움을 줄 수 있습니다. 팀원이나 고객이 사용할 수 있기를 바랍니다.또는 ssh를 통해 NAT 또는 방화벽 뒤의 서버, 예를 들어 홈 네트워크의raspberry pi 또는 NAT 뒤의ec2 실례에 접근합니다.
make your localhost app available from anywhere
Provide SSH access to your home server behind NAT
자세한 내용
좋습니다. 더 많은 세부 사항을 공유하는 좋은 방법은 빠른 프레젠테이션을 하는 것입니다!이 영상에서 간단한 개술을 보거나, 더 좋은 것은 아래 네 가지 간단한 절차를 따라 스스로 시도해 보는 것이다.
만약 당신이 흥미가 있거나 궁금하다면, 어떤 것이 유효하거나 무효인지, 아니면 더 좋은 것이, 어떻게 개선되는지, 마음대로 돌려보세요.시작은 1분밖에 안 걸려요.아래의 간단한 절차를 따르기만 하면 된다.
#Install client, using python's package manager (pip)
pip3 install mysocketctl
#Create account
mysocketctl account create \
--name "your_name" \
--email "your_email_address" \
--password "a_secure_password" \
--sshkey "$(cat ~/.ssh/id_rsa.pub)"
#login
mysocketctl login \
--email "your_email_address" \
--password "a_secure_password"
#Launch your first global socket ;)
mysocketctl connect \
--port 8000 \
--name "my test service"
아키텍처 개요
네, 그럼 어떻게 일을 합니까?전역 소켓을 요청하는 프로세스는 API 호출에서 시작됩니다.RESTful API와 직접 연결하거나 mysocketctl
도구를 사용하여 이 기능을 수행할 수 있습니다.이것은 전역 mysocket 대상을 되돌려줍니다. 이 대상은 이름, 포트 번호, 그리고 기타 정보를 포함합니다.
이제 소켓 객체를 사용하여 터널 객체를 작성할 수 있습니다.그리고 이 터널들은 로컬 서비스를 전 세계 mysocket에 연결하는 데 사용됩니다.io 인프라 시설.이 두 TCP 세션을 연결하여 Google은 귀하의 로컬 서비스를 전 세계에서 사용할 수 있도록 합니다.
Creating a Socket, a Tunnel, and connecting to mysocket.io
다음 그림은 서비스 데이터 평면에 대한 고급 개요를 제공합니다.왼쪽은 시발지 서비스입니다.이것은 아마도 당신의 노트북, 당신 집의 나무 베리 껍질, 심지어는 쿠베르네트스 집단의 용기일 것이다.원시 서비스는 매우 엄격한 방화벽, 심지어NAT 뒤에 있을 수 있다.그것이 필요로 하는 것은 단지 출국 네트워크 접근일 뿐이다.그리고 우리는 모든 mysocket에 연결된 안전한 암호화 터널을 만들 수 있습니다.io 서버는 전 세계에 널리 퍼져 있다.
Mysocket.io dataplane
방송하다
Mysocket.io 서비스는 AWS의 글로벌 가속기를 사용합니다.이것만 있으면 터널 서버와 프록시 서비스를 마음대로 재생할 수 있습니다.이것은 부하 균형과 높은 가용성에 대한 몇 가지 도전을 해결했다.mysocket 터널과 프록시 서버는 북미, 유럽, 아시아에 있습니다.
터널이 구축되면 연결 이벤트는 모든 다른 노드에 실시간으로 알려주고 모든 변두리 노드가 서비스의 터널이 어디에 있는지 알 수 있도록 합니다.
문서
나의 목표 중 하나는 마이소켓을 매우 쉽게 사용할 수 있도록 하는 것이다.이 점을 실현하는 방법의 하나는 좋은 문서를 가지고 있다는 것이다.우리readthedocs를 확인해 달라고 초대합니다.io 문서가 여기에 있음 (https://mysocket.readthedocs.io/
그것은 두 부분으로 나뉜다.
#Install client, using python's package manager (pip)
pip3 install mysocketctl
#Create account
mysocketctl account create \
--name "your_name" \
--email "your_email_address" \
--password "a_secure_password" \
--sshkey "$(cat ~/.ssh/id_rsa.pub)"
#login
mysocketctl login \
--email "your_email_address" \
--password "a_secure_password"
#Launch your first global socket ;)
mysocketctl connect \
--port 8000 \
--name "my test service"
네, 그럼 어떻게 일을 합니까?전역 소켓을 요청하는 프로세스는 API 호출에서 시작됩니다.RESTful API와 직접 연결하거나
mysocketctl
도구를 사용하여 이 기능을 수행할 수 있습니다.이것은 전역 mysocket 대상을 되돌려줍니다. 이 대상은 이름, 포트 번호, 그리고 기타 정보를 포함합니다. 이제 소켓 객체를 사용하여 터널 객체를 작성할 수 있습니다.그리고 이 터널들은 로컬 서비스를 전 세계 mysocket에 연결하는 데 사용됩니다.io 인프라 시설.이 두 TCP 세션을 연결하여 Google은 귀하의 로컬 서비스를 전 세계에서 사용할 수 있도록 합니다.
Creating a Socket, a Tunnel, and connecting to mysocket.io
다음 그림은 서비스 데이터 평면에 대한 고급 개요를 제공합니다.왼쪽은 시발지 서비스입니다.이것은 아마도 당신의 노트북, 당신 집의 나무 베리 껍질, 심지어는 쿠베르네트스 집단의 용기일 것이다.원시 서비스는 매우 엄격한 방화벽, 심지어NAT 뒤에 있을 수 있다.그것이 필요로 하는 것은 단지 출국 네트워크 접근일 뿐이다.그리고 우리는 모든 mysocket에 연결된 안전한 암호화 터널을 만들 수 있습니다.io 서버는 전 세계에 널리 퍼져 있다.
Mysocket.io dataplane
방송하다
Mysocket.io 서비스는 AWS의 글로벌 가속기를 사용합니다.이것만 있으면 터널 서버와 프록시 서비스를 마음대로 재생할 수 있습니다.이것은 부하 균형과 높은 가용성에 대한 몇 가지 도전을 해결했다.mysocket 터널과 프록시 서버는 북미, 유럽, 아시아에 있습니다.
터널이 구축되면 연결 이벤트는 모든 다른 노드에 실시간으로 알려주고 모든 변두리 노드가 서비스의 터널이 어디에 있는지 알 수 있도록 합니다.
문서
나의 목표 중 하나는 마이소켓을 매우 쉽게 사용할 수 있도록 하는 것이다.이 점을 실현하는 방법의 하나는 좋은 문서를 가지고 있다는 것이다.우리readthedocs를 확인해 달라고 초대합니다.io 문서가 여기에 있음 (https://mysocket.readthedocs.io/
그것은 두 부분으로 나뉜다.
나의 목표 중 하나는 마이소켓을 매우 쉽게 사용할 수 있도록 하는 것이다.이 점을 실현하는 방법의 하나는 좋은 문서를 가지고 있다는 것이다.우리readthedocs를 확인해 달라고 초대합니다.io 문서가 여기에 있음 (https://mysocket.readthedocs.io/
그것은 두 부분으로 나뉜다.
너는 아마도 이곳에도 사이트가 있다는 것을 이미 알아차렸을 것이다.빠른 로그인 페이지를 만들고 싶어서 Wix를 사용하기로 결정했습니다.일반 도메인 이름 형식.그들은 그것을 매우 간단하게 만들었다.내가 좀 과격했나봐;)이 모든 것은 하룻밤에 클릭한 것으로 매우 깔끔하다.
More to come
아직 할 말이 많고, 또 많은 기괴한 세부 사항을 깊이 연구해야 한다.더 중요한 것은 우리가 이 기초 위에서 계속 발전하여 그것을 더욱 좋아지게 할 수 있다는 것이다. (만약 당신이 생각이나 건의가 있다면 나에게 말해 주세요.)
그러니까 계속 지켜봐 주세요.이는 본 블로그에서나 mysocket.io blog에서나 후속 블로그 게시물의 계획입니다.
Cheers,
-Andree
Reference
이 문제에 관하여(마이소켓을 소개합니다.목위일), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/aws-builders/introducing-mysocket-io-28jd
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Cheers,
-Andree
Reference
이 문제에 관하여(마이소켓을 소개합니다.목위일), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/aws-builders/introducing-mysocket-io-28jd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)