はじめに
こんにちは、辻です。先日開催されました Go Conference 2021 spring にTIGから渋川、辻の計2名が登壇しました。
The Gopher character is based on the Go mascot designed by Renée French.
Go Conference’20 in Autumnではオンラインとオフラインのハイブリッドな構成でしたが、今回はGo Conference史上初となるフルオンラインでの開催となりました。今回のカンファレンスでは事前録画したビデオによる発表もサポートされていました。またオンラインでのリアルタイム登壇にあたって、リハーサルを始め手厚いサポートをいただき、安心して発表できました。運営の皆様、ありがとうございました!
実務で役立つTCPクライアントの作り方
発表資料は以下です。
発表内容は、TCPクライアントを実装するときの考慮点をまとめたものです。普段HTTPなどを用いて通信するときはGoの標準ライブラリである net/http
パッケージのAPIを使います。自前で net
パッケージを使ってTCPクライアントを実装する必要はありません。しかし標準ライブラリではサポートされていないTCP上の独自のプロトコルで通信する必要がある場合や、通信したいプロトコルがOSSとして公開されているライブラリでは不足がある場合などは、自前でTCPクライアントを実装する必要があります。Go Conferenceの他のセッションでも、金融系のプロトコルであるISO8583をTCPで扱っている例が紹介されており、実は身近なところで独自のTCPクライアントが必要になるかもしれません。
Goでは net
パッケージを使うと簡単にTCPクライアントを実装できますが、プロダクションレディなTCPクライアントに仕上げていくにはいくつか考慮点があります。
- タイムアウト
- コネクションプーリング
- エラーハンドリング
- リトライ
といったポイントを紹介しています。
セッションを見ていただいた皆様、Twitterでコメントくださった皆様、ありがとうございました!
Goでソケットを直接触る機会、ありそうでなかなかないのでこういった知識の復習大事 #gocon #goconA
— castaneai (@castanea) April 24, 2021
コネクションプーリングしていてそのコネクションが悪くなっていることがあるって怖いね。#gocon #goconA
— Kabo (@kabochapo) April 24, 2021
— luccafort (@luccafort) April 24, 2021