2

생산을위한 하스켈 코드를 안정된 방식으로 배포 할 때의 경험은 어떻습니까?스냅 프레임 워크를 사용하는 하스켈 코드 배포

서버에서 컴파일이 실패한 경우 배포를 중단하고 성공하면 snap-server를 켜고 대신 새 버전을 시작하고 싶습니다.

나는 많은 방법이 있음을 알고 있습니다. rsync에서 git-hooks까지 모든 것 (git pull은 악몽이었습니다). 하지만 당신의 경험을 듣고 싶습니다.

+0

일반적으로 목록과 같은 답변을 요청하는 광범위한 질문은 일반적으로 권장되지 않습니다. 하나의 프레임 워크에 중점을 두어 플랫폼, 스케일링 등에 관한 요구 사항에 대한 정보를 추가하는 것이 더 건설적 일 것입니다. – hammar

+0

@hammar 편집 obseleted 답변. – alternative

답변

4

내가 일하는 곳에서는 Happstack을 사용하고 Ubuntu Linux에 배포합니다. 우리는 실제로 웹 응용 프로그램과 모든 종속성을 데비안 화 한 다음 자동 빌드에서 빌드합니다.

실제로 우리가 apt-get update && apt-get install webapp-production

이 시스템의 장점은 쉽게 모든 개발자가 종속성 동일한 버전에 대한 개발을 할 수있게한다는 것입니다 실행, 서버에 설치하십시오. 그리고 모든 소스 코드가 제대로 체크인되고 어느 특정 머신에서만 재 구축 될 수 있다는 것을 알고 있습니다. 또한 필요에 따라 라이브러리에 패치를 적용 할 수있는 메커니즘을 제공합니다.

단점은 apt-get과 cabal-install이 잘 맞지 않는다는 것입니다. apt-get을 통해 모든 것을 만들거나 cabal-install을 통해 모든 것을해야합니다.

+0

현재 Happstack (최고의 문서 및 안정)을 사용하고 있습니다. 그러나 홈페이지에 뉴스가 없다면 나에게서 지옥이 무서워. –

+1

@Daniel W - Repo를 따라 가면 Happstack은 여전히 ​​적극적인 유지 보수 및 개발 단계에 있음을 알 수 있습니다. 'happstack-server '와 같은 패키지에 대한 Hackages의 업로드 기록도 똑같이 나타납니다. 해피 스탁 (Happstack)은 모든 프레임 워크에서 승진에 가장 적은 에너지를 쏟아 부 었으며, 작업은 일반적으로 "섹시 (섹시)"보다 훨씬 더 점진적입니다. – sclv

+0

Eek. 미안합니다. 현재 개발에 대한 지속적인 업데이트가 이루어질 수 있도록 몇 가지 사항을 변경하겠습니다. – stepcut

3

우리가하는 바는 다음과 같습니다. 첫째로, 우리 서버는 모두 우분투와 같은 개발 버전입니다. 우리는 코드를 사용하고, 테스트 등을 우리가 사용하고자하는 모든 os에 우리가 우리가 디벨 기계 (들)에 구축을 밀어 준비가되면. 오랫동안 컴파일 된 상태에서 (프론트 엔드 서버 수)/2, rsync resources 디렉토리 및 새 바이너리 복사본을 중지 한 다음 스크립트를 사용하여 백업을 시작합니다. 그런 다음 나머지 절반을 반복하십시오.

필자는 바이너리 및 정적 자산을 쉽게 전송할 수있을 때 프론트 엔드 서버에서 전체 툴체인을 유지하는 논리에 의문을 제기해야한다고 생각합니다. 외부 라이브러리 (데이터베이스, 이미지 등)를 제공해야합니다.) 버전은 빌드 환경과 일치합니다. 젠체, os와 라이브러리의 릴리스가 일치하는 한, 최종 컴파일을 수행하기 위해 virtualbox 인스턴스를 사용할 수 있습니다.

+0

이것은 일반적으로 걸리는 접근 방식입니다. 때로는 git을 사용하여 바이너리 + 정적 파일을 배포합니다. 그렇습니다. git repo는 바이너리를 가지고 있기 때문에 엄청납니다.하지만 문제가 생기면 마지막으로 좋은 설정으로 되 돌리는 것이 쉽습니다. 또한 대개 while (1) 문으로 둘러싸인 쉘 스크립트에서 내 응용 프로그램을 실행합니다. 그렇게하면 어떤 식 으로든 충돌이 발생하면 자동으로 다시 시작됩니다. 이것은 또한 실행중인 바이너리에 간단한 "git pull"과 SIGHUP으로 새 버전으로 전환 할 수있게 해줍니다. – mightybyte

+0

Snap이나 happstack webapp과 같이 어떤 종류의 스크립트를 시작해야하는지 설명해 주시겠습니까? 내 로컬 컴퓨터에서 작동하는 스냅 응용 프로그램을 가지고 있지만 프로덕션 서버에서 시작하는 방법을 완전히 알지 못합니다. 또한 자유 시간이있는 경우 이것에 대한 질문을 게시했습니다. http://stackoverflow.com/questions/11214167/how-to-run-snap-haskell-webapp-in-production – drozzy

관련 문제