▲neo 10일전 | parent | favorite | on: GN⁺: Erlang 핫 코드 업데이트의 활용 방법(underjord.io)Hacker News 의견 Discord에서 BEAM 핫 코드 로딩을 사용하여 긴 배포 주기를 단축하고 긴급 업데이트에 활용했음 여러 모듈을 동시에 패치할 수 있는 도구를 개발하여 클러스터에 업데이트를 전파했음 Erlang의 내장 분배 기능을 통해 핫 패치를 배포했음 Nerves 장치에서 코드 리로딩이 유용하며, 실시간으로 수정 사항을 테스트할 수 있어 통합 테스트에 좋음 원격에서 새로운 펌웨어를 테스트하고 업데이트하여 고객을 만족시켰음 파일을 /tmp에 복사한 후 Code.compile을 사용하는 것이 더 나은 오류 메시지를 제공함 모든 코드를 컴파일하고 삭제하는 헬퍼 함수를 작성하는 것이 간단함 Elixir 프로젝트에서 핫 코드 업데이트를 사용할 수 없었지만, 고객에게 도움이 되었을 것이라고 생각함 복잡한 변경 사항에는 핫 코드 업데이트가 문제를 더 일으킬 수 있음 간단한 변경 사항에는 최소한의 영향을 주는 것이 좋음 kosmi.io에서 핫 코드 업그레이드를 성공적으로 사용하고 있음 빠른 개발과 수정, 업데이트 배포가 가능함 Distillery와 커스텀 스크립트를 사용하지만 표준화되었으면 좋겠음 Nerves와 핫 코드 리로딩을 통해 Erlang에 관심을 가지게 되었음 생산 환경에서 실용적이지는 않지만, 신뢰할 수 있는 시스템 구축에 유용한 도구임 릴업 준비 시 매우 주의해야 하며, Linux에서는 새로운 서버를 실행하고 세션 데이터를 전송하는 방법도 있음 핫 패칭은 동일한 VM을 계속 실행하기 때문에 만족스럽지 않을 수 있음 Elixir를 임베디드 Linux에 배포하며, Nerves가 systemd를 대체하고 BEAM VM을 프로세스 1로 부팅함 Elixir를 하드웨어에 가깝게 배치함 WhatsApp은 과거에 SSH 스크립트를 사용하여 모든 노드에서 핫 리로딩을 수행했음 핫 코드 업데이트는 유용하지만 쉽게 실수를 유발할 수 있으며 지원이 부족함 핫 코드 업데이트의 이점은 신중한 롤링 재시작을 통해 얻을 수 있음 Erlang의 코드 리로딩 기능을 활용하여 실시간 문제 진단 도구를 만들 수 있음 핫 코드 업데이트는 많은 클라이언트가 연결된 상황에서 코드 변경을 수행할 때 유리함 GNU Make를 사용하여 코드를 프로덕션에 동기화하고 디버그 셸을 통해 모듈을 로드했음
Hacker News 의견
Discord에서 BEAM 핫 코드 로딩을 사용하여 긴 배포 주기를 단축하고 긴급 업데이트에 활용했음
Nerves 장치에서 코드 리로딩이 유용하며, 실시간으로 수정 사항을 테스트할 수 있어 통합 테스트에 좋음
/tmp
에 복사한 후Code.compile
을 사용하는 것이 더 나은 오류 메시지를 제공함Elixir 프로젝트에서 핫 코드 업데이트를 사용할 수 없었지만, 고객에게 도움이 되었을 것이라고 생각함
kosmi.io에서 핫 코드 업그레이드를 성공적으로 사용하고 있음
Nerves와 핫 코드 리로딩을 통해 Erlang에 관심을 가지게 되었음
릴업 준비 시 매우 주의해야 하며, Linux에서는 새로운 서버를 실행하고 세션 데이터를 전송하는 방법도 있음
Elixir를 임베디드 Linux에 배포하며, Nerves가 systemd를 대체하고 BEAM VM을 프로세스 1로 부팅함
WhatsApp은 과거에 SSH 스크립트를 사용하여 모든 노드에서 핫 리로딩을 수행했음
핫 코드 업데이트는 유용하지만 쉽게 실수를 유발할 수 있으며 지원이 부족함
핫 코드 업데이트는 많은 클라이언트가 연결된 상황에서 코드 변경을 수행할 때 유리함