replace Python services ▌2014-02 First Go OSS: kintone Go SDK https://github.com/kintone/go-kintone ▌2016-02 Org. for Go OSS: https://github.com/cybozu-go
a lot of third-party libraries to run in a production environment. ▌We should be able to: update third-party libraries easily, reproduce the executable reliably, and keep enough quality for production use.
two frameworks: github.com/cybozu-go/log standardize log fields and formats. github.com/cybozu-go/cmd manage goroutines, logging, signals, etc. ▌Both are open source.
virtually all goroutines. ▌ Features Standardized signal handling Graceful restart of servers Logging using cybozu-go/log etc. https://ymmt2005.hatenablog.com/entry/2016/09/03/Making_well-behaved_programs_in_Go_with_cybozu-go/cmd
a SOCKS or HTTP proxy transparently Use iptables instead of LD_PRELOAD works for programs independent of libc. ▌github.com/cybozu-go/usocksd SOCKS4/5 server (and library) Dynamic IP deselection using DNSBL https://ymmt2005.hatenablog.com/entry/2016/03/13/Transparent_SOCKS_proxy_in_Go_to_replace_NAT
sent SIGPIPE to itself. 3. transocks died with SIGPIPE. 4. systemd did not restart transocks because it figured that exit with SIGPIPE is not a failure!!!
OOM score of journald: ▌Add this line to your service unit files: $ cat /etc/systemd/system/systemd-journald.service.d/oom_score_adj.conf [Service] OOMScoreAdjust=-1000 RestartForceExitStatus=SIGPIPE