해결된 질문
작성
·
1.6K
0
안녕하세요
dev push 후 master 에 merge 중 에러가 나서 질문 드립니다!
섹션 4. Github Actions 를 이용한 배포자동화
main branch 보호해주기
강좌를 보고 있는데요
client_loop: send disconnect: Broken pipe
해당 에러가 나고 있지만
domain 으로 접속해보니깐 수정한 텍스트 적용이 잘되더라구요
검색해보니
https://may0301.tistory.com/10
소켓이 닫혀서
nano ~/.ssh/config 파일에
text editor에 Host * ServerAliveInterval 120 TCPKeepAlive no
를 입력 해줘야한다고하는데
혹시 해당 에러가 나는 원인을 알수 있을까요?
위에 검색한대로 소켓이 닫혀서 그럴까요?
답변 1
2
맞습니다! 배포과정이 길어지면 SSH 네트워크 연결이 끊어질 수 있습니다. ssh 연결후 명령어들을 넘겨주고 나면 github action workflow와 Lightsail instance 사이에 더이상 통신이 없기 때문에 이 시간이 길어지면 idle connection으로 간주하고 커넥션을 닫습니다. 물론 짧아도 네트워크 특성상 랜덤하게 끊길 수도 있고요. 위에 찾으신 방식으로 어느정도는 개선 할 수는 있습니다.
이런 불편함들을 잘 기억해주고 강의 진행하시면 도움이 많이 될듯합니다! 컨테이너 기술을 이용하면 지금 겪고 있는 번거러움들은 근본적으로 차단할 수 있거든요!
해당 오류를 직접적으로 해결하지는 않아요. 대신 컨테이너를 활용한 근본적으로 더 좋은 배포 방법을 보여드립니다.
근본적인 문제를 생각해보면 지금 프러덕션 백엔드 코드가 돌아가야할 서버에서 npm install, build등 불필요한 작업들을 하고 있단 말이죠. 이 작업이 오래 걸려서 socket이 닫히는 문제가 생겼죠. 그리고 또 다른 부작용으로는 일시적으로 cpu, memory를 상당히 많이 잡아 먹어서 프러덕션에 악영향을 줄 수 있어요. 더 나아가서 강의에서 다루는 horizontal scale을 하게 되면 모든 lightsail instance에서 이 작업이 무의미하게 반복되겠죠.
이런 근본적인 문제 해결을 위해 컨테이너를 중반부에서 배우게 됩니다. 서버에서는 그냥 바로 실행할 수 있도록 github action workflow에서 test, npm install, build, image 생성까지 전부 하게 됩니다.
지금 배우고 있는 Lightsail에 배포하는 내용들을 당연히 사용할 수 있지만(저도 실제로 프러덕션에서 많이 사용했습니다) 현대적인 배포 방법을 효과적으로 배우기 위한 빌드업 단계로 봐주시면 좋을듯합니다!
앗 답변 감사합니다~
혹시 해당에러건은
뒷강좌 들을 보면 해결이 될 에러부분 일까욤?