인프런 커뮤니티 질문&답변

huk님의 프로필 이미지
huk

작성한 질문수

AWS 배포 완벽가이드 (feat. Lightsail, Docker, ECS)

client_loop: send disconnect: Broken pipe

해결된 질문

작성

·

1.7K

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으로 간주하고 커넥션을 닫습니다. 물론 짧아도 네트워크 특성상 랜덤하게 끊길 수도 있고요. 위에 찾으신 방식으로 어느정도는 개선 할 수는 있습니다.

 

이런 불편함들을 잘 기억해주고 강의 진행하시면 도움이 많이 될듯합니다! 컨테이너 기술을 이용하면 지금 겪고 있는 번거러움들은 근본적으로 차단할 수 있거든요!

huk님의 프로필 이미지
huk
질문자

앗 답변 감사합니다~

혹시 해당에러건은

뒷강좌 들을 보면 해결이 될 에러부분 일까욤?

해당 오류를 직접적으로 해결하지는 않아요. 대신 컨테이너를 활용한 근본적으로 더 좋은 배포 방법을 보여드립니다.

 

근본적인 문제를 생각해보면 지금 프러덕션 백엔드 코드가 돌아가야할 서버에서 npm install, build등 불필요한 작업들을 하고 있단 말이죠. 이 작업이 오래 걸려서 socket이 닫히는 문제가 생겼죠. 그리고 또 다른 부작용으로는 일시적으로 cpu, memory를 상당히 많이 잡아 먹어서 프러덕션에 악영향을 줄 수 있어요. 더 나아가서 강의에서 다루는 horizontal scale을 하게 되면 모든 lightsail instance에서 이 작업이 무의미하게 반복되겠죠.

 

이런 근본적인 문제 해결을 위해 컨테이너를 중반부에서 배우게 됩니다. 서버에서는 그냥 바로 실행할 수 있도록 github action workflow에서 test, npm install, build, image 생성까지 전부 하게 됩니다.

지금 배우고 있는 Lightsail에 배포하는 내용들을 당연히 사용할 수 있지만(저도 실제로 프러덕션에서 많이 사용했습니다) 현대적인 배포 방법을 효과적으로 배우기 위한 빌드업 단계로 봐주시면 좋을듯합니다!

huk님의 프로필 이미지
huk
질문자

빠른답변 감사드립니다~

huk님의 프로필 이미지
huk

작성한 질문수

질문하기