์์ฝ:
๋ชจ๋ ์ฃผ์ Linux ๋ฐฐํฌํ์ ํจํค์ง ๊ด๋ฆฌ์์ ์์กดํ์ฌ ํต์ ๋๊ณ ์์ ํ ๋ฐฉ์์ผ๋ก ์ํํธ์จ์ด๋ฅผ ์ค์นํฉ๋๋ค.
์ด ์ ์์ ํจํค์ง๊ฐ ์์์ ์ผ๋ก RPM , deb ๋ฐ opkg ํ์์ผ๋ก ์์ฑ๋๊ณ ๋์ค์ ์ถ๊ฐ ํจํค์ง ํ์์ด ์ถ๊ฐ๋๋ค๋ ๊ฒ์ ๋๋ค.
์ ์ด๊ฒ์ด ํ์ํฉ๋๊น?
๋ง์ ์ํฐํ๋ผ์ด์ฆ ์กฐ์ง์์๋ git์ด ์์ฒด ์๋ฒ ์ด์ธ์ ์๋ฒ์ ์ฐ๊ฒฐํ๋ ๊ฒ์ ๋ฐฉ์งํ๊ณ wget
๋ช
๋ น๋ ํ์ฉํ์ง ์์ ์ ์์ต๋๋ค.
Docker๋ ์ข ์ข ์ด๋ฌํ ์กฐ์ง ๋ด์์ ์ฌ์ฉํ ์ ์์ง๋ง ํจํค์ง ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ํ ์ก์ธ์ค๋ "์๋ ค์ง ์๋"์ด๋ฏ๋ก ๋ณด์ ํ์ ํ๋งคํ๊ธฐ๊ฐ ๋ ์ฝ์ต๋๋ค. ํนํ ํจํค์ง๋ ์์ฑ ํ๋ก์ธ์ค์ ์ผ๋ถ๋ก ์์ ํ ์๋ช ๋๋ ๊ฒฝํฅ์ด ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
Docker๊ฐ ์ ํฉํ์ง ์์ ์ํฉ๋ ์์ต๋๋ค. ์ฌ๊ธฐ์๋ ์์คํ ํตํฉ์/๊ด๋ฆฌํ ์๋น์ค ๊ณต๊ธ์๊ฐ ์ปจํ ์ด๋๊ฐ ์๋ ์ธ์คํด์ค๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ AWS Auto Scaling ๊ทธ๋ฃน์ ์ฌ์ฉํ์ฌ ํ์ฅํ๊ฑฐ๋ ์์ ํ ํ๊ฒฝ์์ ๋ฒ ์ด๋ฉํ ์ค์น๋ฅผ ์ํ๋ ๊ฒฝ์ฐ๊ฐ ํฌํจ๋ ์ ์์ต๋๋ค.
์ฌ์ฉ ๊ฐ๋ฅํ ํจํค์ง๊ฐ ์์ ๋ Ansible, Chef ๋๋ Puppet๊ณผ ๊ฐ์ ๊ตฌ์ฑ ๊ด๋ฆฌ ๋๊ตฌ๋ฅผ ํตํ ์ค์น๋ ์์ฒญ๋๊ฒ ์ด๋ ต์ต๋๋ค.
๋ง์ง๋ง์ผ๋ก ํจํค์ง๊ฐ ์๋ git ์ ์ฅ์์์ ์ค์นํ๋ ๊ฒ์ ์ปดํ์ผ๋ฌ ์์ด๋ ์ด๋ ต์ต๋๋ค. ์ด๋ ํ๋ก๋์ ์์คํ ์ ์ปดํ์ผ๋ฌ๋ฅผ ์ค์นํจ์ผ๋ก์จ ๋ณด์ ์ํ์ ์ผ๊ธฐํฉ๋๋ค.
์ด๋ฏธ ๊ฑฐ๊ธฐ์ ๋ฌด์์ด ์์ต๋๊น?
ํ์ฌ ์ฐ๋ฆฌ๋ ๋ ๊ฐ์ ๋์ปค ์ปจํ
์ด๋( ttn-lw-stack
๋ฐ ttn-lw-cli
) ๋๋ git์์ ๋์ผํ ์ด๋ฆ์ ๋ฐ์ด๋๋ฆฌ ๋น๋ ์ค์์ ์ ํํ ์ ์์ต๋๋ค.
๋ฐฐํฌ๋ docker pull
๋๋ git clone
๋ฅผ ํตํด ์ด๋ฃจ์ด์ง๋ฉฐ ๋ ๋ค ๊ธฐ์
/๊ต์ก์ฉ ๋ฐฉํ๋ฒฝ ๋ค์์ ์๋ํ์ง ์์ ์ ์์ต๋๋ค.
์์ด์ง ๋ฌผ๊ฑด ์์ด์?
yum
, apt
๋๋ opkg
๋ฅผ ํตํ ์ค์น ๊ธฐ๋ฅ
์ด๋ฅผ ๊ตฌํํ๊ธฐ ์ํด ์ด๋ป๊ฒ ์ ์ํฉ๋๊น?
์ด๊ฒ์ GO Releaser ๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌํํ๊ธฐ๊ฐ ์๋์ ์ผ๋ก ์ฌ์์ผ ํ์ง๋ง GO๋ ๋ด๊ฐ ํนํ ์น์ํ ์ธ์ด๊ฐ ์๋๋๋ค(์์ง!).
ํ๊ฒฝ:
Linux - CentOS/RHEL ๊ธฐ๋ฐ, Debian/Ubuntu ๊ธฐ๋ฐ, OpenWRT ๊ธฐ๋ฐ
์ค์ค๋ก ๋ฌด์์ ํ ์ ์๊ณ ์ด๋ค ๋์์ด ํ์ํฉ๋๊น?
์ด๊ฒ์ด ๋ฐฐํฌ๋ฅผ ์ํด go ์์ฉ ํ๋ก๊ทธ๋จ์ ํจํค์งํ๋ ์ ์ ํ ๋ฐฉ๋ฒ์ธ์ง ํ์ธํ ๋ค์ GO!
APT, AUR ๋ฐ https://github.com/nixos/nixpkgs ์ ํจํค์ง๋ฅผ ์ถ๊ฐํ๋ ๊ฒ๋ถํฐ ์์ํ๊ฒ ์ต๋๋ค. ์ด๋ฌํ ํ์์ ์ด๋ฏธ ์ต์ํ๊ธฐ ๋๋ฌธ์
๋๋ค. ๋ค๋ฅธ ๊ฒ๋ค์ ๋์ค์ ์ถ๊ฐ๋ ๊ฒ์
๋๋ค.
๋ฌผ๋ก ๊ธฐ์ฌ๋ ์ธ์ ๋ ํ์์
๋๋ค!
@rvolosatovs go-releaser๋ฅผ ์ฌ์ฉํ์๊ฒ ์ต๋๊น, ์๋๋ฉด ํจํค์ง๋ฅผ ๋ง๋๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์๊ฒ ์ต๋๊น?
๋๋ ๋น์ ์ด ๊ทธ๊ฒ๋ค์ ๋ง๋๋ ๋ฐ ๋ฌด์์ ์ฌ์ฉํ๊ณ ์๋์ง ์๋ ํ RPM ์ธก๋ฉด์์ ์ผํ๊ฒ ๋์ด ๊ธฐ์ฉ๋๋ค! :)
์ฐ๋ฆฌ๋ CD์ ์ด ๋ถ๋ถ๋ ๋ง๋ค ๊ฒ์ ๋๋ค.
๋ํ ์์๋ฆฌ์คํธ์ brew
์ ์ถ๊ฐํฉ๋๋ค.
์ฌ๊ธฐ์ ๋ด ์ง์์ ์ถ๊ฐํ๋ฉด ๋ฉ๋๋ค. ์ ๋ ์ด์ ์ docker๋ฅผ ์ฌ์ฉํ ์ ์ด ์์ผ๋ฉฐ ๋ง์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๊ฐ ์๋ค๋ ์ ์ ๊ฐ์ฌํ์ง๋ง ์ด์ ์ ํ ๋ฒ๋ ํด๋ณธ ์ ์ด ์๋ ์ฌ๋์๊ฒ๋ ํฐ ๋์ฝ์ด์์ต๋๋ค. ๋ฆฌํฌ์งํ ๋ฆฌ์์ ์ค์นํ๋ ๊ฒ์ ๊ฐ๋ฐ์๊ฐ ์์ ์ ์ํํ๋ ๋ฐฉ์์ด์ง๋ง ์ต์ข ์ฌ์ฉ์์๊ฒ๋ ๊ทธ๋ค์ง ์น์ํ์ง ์์ต๋๋ค.
์ด๊ฒ์ ๋ํ ๋ชจ๋ ์์ ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ์์ผ๋ก ๋ฉฐ์น ๋ด์ RPM ์ง์์ ์ถ๊ฐํ๊ณ ํ ์คํธํ ์๊ฐ์ ๊ฐ๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
@proffalken ์ฐ๋ฆฌ๋ CI์ ์ผ๋ถ๋ก RPM ํจํค์ง๋ฅผ ๋น๋ํ ๊ฒ์ ๋๋ค. ๋ฆด๋ฆฌ์ค๊ฐ ์๋ฃ๋๋ฉด ๋ฆด๋ฆฌ์ค ํ์ด์ง ์์ ์ฐพ์ ์ ์์ต๋๋ค. (์ฐธ๊ณ ๋ก github์ ๋ฆด๋ฆฌ์ค์ฉ Atom ํผ๋๋ ์ง์ํฉ๋๋ค. https://github.com/thethingsnetwork/lorawan-stack/releases.atom)
goreleaser ์ฌ์ฉ์ ๋ํ ๊ทํ์ ์ ์์ ๋ฐ๋์ต๋๋ค.
RPM ํจํค์ง ์์ฒด์ ๊ด๋ จํ์ฌ - ํ์ฌ๋ก์๋ https://github.com/TheThingsNetwork/lorawan-stack/blob/b1183962c502e6b53191086c23567c546c2b8ec5/.goreleaser.yml#L79 -L92์
๋๋ค.
์๋ฅผ ๋ค์ด ํ๋ก ํธ์๋์ ์์น๋ RPM ํจํค์ง์ ๋นํ์ค ์์น์ด๋ฉฐ ์ค์ ๋ก ์คํ์ ๊ธฐ๋ณธ๊ฐ๋ ์๋๋๋ค( /srv/ttn-lorawan/public
์ ์์ ๊ฒ์ผ๋ก ์์ํจ).
๋ฐ๋ผ์ ์ด ์์
์ ์ํํ๋ ๋ฐฉ๋ฒ์ ๋ํ ๊ทํ์ ์๊ฒฌ์ ๋งค์ฐ ๋์์ด ๋ ๊ฒ์
๋๋ค.
์๋ฅผ ๋ค์ด brew
์ ๊ฒฝ์ฐ ์คํ ๋ฐ์ด๋๋ฆฌ๋ฅผ ๋ํํ์ฌ ํ๋ก ํธ์๋๋ฅผ ๊ฐ๋ฆฌํค๋๋ก ๊ด๋ จ ํ๊ฒฝ ๋ณ์๋ฅผ ์ค์ ํฉ๋๋ค.
https://github.com/TheThingsNetwork/lorawan-stack/blob/b1183962c502e6b53191086c23567c546c2b8ec5/.goreleaser.yml#L116 -L119
RPM ํจํค์ง์์ ์์๋๋ ์์น๊ฐ ๋ค๋ฅด๋ค๊ณ ํ์ ํ์ง๋ง, ๋์ผํ ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
@rvolosatovs ๋ ๋์๊ฒ ์๋ฒฝํฉ๋๋ค.
ํ๊ฒฝ ๋ณ์์ ์ค์ ์ ์๋ง๋ systemd ์๋น์ค ์คํฌ๋ฆฝํธ์์ ๊ฐ์ฅ ์ ์ํ๋ ๊ฒ์ ๋๋ค. ๊ฐ๋ฅํ ํ ๋นจ๋ฆฌ ํ๋๋ฅผ ํตํฉํ๋ ค๊ณ ํฉ๋๋ค.
/srv/ttn-lorawan/public
์ ๋ฌผ๊ฑด์ ์ง์ด๋ฃ๋ ๊ฒ๋ ์๋ฒฝํ๊ฒ ํ์ฉ๋ฉ๋๋ค. :)
@rvolosatovs ๋ ์ด๋ธ ๋ฐ/๋๋ ์๋ ์๊ฒฌ์ ์ ๋ฐ์ดํธํ์ฌ ๋ ์ด์ ๋์์ด ํ์ํ์ง ์๊ฑฐ๋ ํน์ ๋ฐฐํฌ์ ๋ํ ๋์์ด ํ์ํ์ง ์์์ ๋ํ๋ผ ์ ์์ต๋๊น? ์ปค๋ฎค๋ํฐ ๊ตฌ์ฑ์์ด ๋๋ถ๋ถ์ด ์งํ ์ค์ธ ๋์ ์ด๋ฅผ ์ด์ฌํ ๊ตฌํํ๊ธฐ ์ ์.
v3.0.0
๋ฆด๋ฆฌ์ค ๋ถ์กฑ์ผ๋ก ์ฐจ๋จ๋์์ต๋๋ค.
์ํํ ๋ฒ์ ์ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๊ฒ์ํ๋ ๊ฒ์ ์๋ฏธ๊ฐ ์์ต๋๋ค.
์ถ์๋ก ์ธํด ํ์๋์์ต๋๋ค. Snappy ๋ฐ Brew ์ง์๊ณผ deb ๋ฐ rpm ํ์ผ์ด ์์ต๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ฐ๋ฆฌ๋ CD์ ์ด ๋ถ๋ถ๋ ๋ง๋ค ๊ฒ์ ๋๋ค.
๋ํ ์์๋ฆฌ์คํธ์
brew
์ ์ถ๊ฐํฉ๋๋ค.