
데브옵스
Travis CI
지속적 통합 서비스의 하나로, 깃허브에 호스팅되는 소프트웨어 프로젝트의 빌드, 테스트를 위해 사용된다
StackOverflow 질문 수: 4083
Github Stars : ★ 8451
사용 기업

렌딧

식스샵

버드뷰

쏘카

천명앤컴퍼니

스타일쉐어

팀오투

이제이엔
뱅크샐러드
하루에 1000번 배포하는 조직 되기
안녕하세요, 뱅크샐러드 Engineering Foundation의 Framework Team 소속 Server Engineer 안석찬입니다. 실리콘밸리의 벤처 캐피털은 테크 기업에 투자를 고려할 때 그 기업이 확장 가능한 기술 역량을 보유하고 있는지 판단합니다. 이때 판단에 활용되는 지표 중 하나가 바로 하루에 발생하는 배포 수입니다. 더 잦은 배포는 더 많은 비즈니스 요구의 충족을 뜻하고 이는 사용자에게 더 많은 가치를 더 빠르게 전달할 수 있다는 것을 의미합니다. 이렇게 더 빠르고 더 큰 성장이 가능하다면 당연히 더 높은 잠재적 가치를 인정받게 되겠죠. 실제로 Lyft, Facebook 등 실리콘밸리의 유명 스타트업, 테크 기업들에서는 하루에 1,000번 이상의 크고 작은 배포가 이뤄지고 있습니다. 여러분의 회사는 배포를 어떻게 하고 있나요? 배포가 어렵거나 무섭지는 않나요? 뱅크샐러드는 하루에 1,000번 배포하는 조직이 되기 위하여 배포 과정을 개선하고 새로운 배포 시스템을 구축했습니다. 새로운 배포 시스템의 도입을 통해 현재는 예전보다 하루에 무려 4배나 많은 배포가 일어나고 있습니다. 실제로 1,000번의 배포를 하기에는 아직 먼 여정이 남아있지만, 한 가지 확실한 것은 뱅크샐러드에서 배포는 더는 무서운 것이 아닙니다. 우리가 어떻게 이런 조직으로 변화하였는지 소개합니다. Old Process 개선된 배포 시스템을 소개하기 전에 간단히 기존 배포 프로세스를 소개하려 합니다. Background 먼저 뱅크샐러드의 기본적인 Tech Stack은 다음과 같습니다. 뱅크샐러드는 Version Control System으로 Git을 사용하며 이를 GitHub를 통해 관리합니다. MSAMicroservice Architecture를 적용하여 비즈니스 도메인별로 여러 서비스를 운영하고 있습니다. 모든 서비스는 Docker로 containerized 되고, 모든 Docker image는 Docker Hub를 통해 관리됩니다. 이러한 수십 개의 서비스와 container를 Kubernetes 환경에서 운영하고 있습니다. 또한 개발 조직을 비롯한 전사 커뮤니케이션 도구로써 Slack을 사용하고 있습니다. Git-Flow 기존에 사용하던 Git 브랜칭 모델은 Git-Flow였습니다. Git-Flow는 오픈소스 프로젝트와 같이 다수의 메인테이너들이 하나의 repository에서 동시에 작업할 수 있는 상황에서 큰 장점이 있는 브랜칭 모델입니다. 총 5가지의 종류의 브랜치가 존재하며 대략적인 다이어그램은 아래와 같습니다. Figure 1 | Git-Flow branch diagram Git-Flow를 사용하여 배포하는 시나리오는 다음과 같습니다. 먼저 develop branch를 base로 feature branch를 생성하고, 해당 branch에서 관련 작업을 진행합니다. 작업 완료 후 이를 develop branch에 merge 합니다. 그다음 또다시 develop branch를 base로 하여 release branch를 생성하고 이 branc
docker
github
githubaction
kubernetes
slack
travisci
네이버
간단하게 구축해 보는 JavaScript 개발 환경
프로그래밍은 다양한 문제를 해결할 수 있는 한 가지 방법입니다. 하지만 해결해야 하는 문제가 크고 복잡해지면서 혼자 소프트웨어를 만들며 프로그래밍으로 문제를 해결하기는 불가능해졌습니다. 소프트웨어를 완성하려면 팀이 함께 일해야 합니다. 팀이 함께 일할 때에는 여기저기 흩어져 있는 복잡한 문제를 단순하게 정리하고 지속적으로 유용하게 관리할 수 있는 협업 공간이 필요하고, 개발 환경도 되도록 동일하게 유지해야 합니다. 이 글에서는 Node.js 기반의 JavaScript 개발 환경으로 범위를 좁혀 팀으로 함께 일할 때 어떻게 협업하고 개발하는지 예제 프로젝트를 통해 간략하게 살펴보겠습니다. GIT과 GITHUB를 활용한 협업 공간으로 개발 시작하기 소프트웨어를 팀과 함께 완성하려면 여기저기 흩어져 있는 복잡한 문제를 단순하게 정리하고 지속적으로 유용하게 관리할 수 있는 협업 공간을 먼저 준비하는 것이 좋다. Git은 소규모 프로젝트부터 대규모 프로젝트에 이르기까지 소스 코드의 버전 관리를 신속하고 효율적으로 처리할 수 있게 설계된 도구이다. 협업하는 과정에서 발생하는 대부분의 문제는 Git을 통해 해결할 수 있다. GitHub는 손쉽게 Git의 원격 저장소를 생성하고 관리할 수 있는 기능을 제공하며, 이슈와 pull request를 중심으로 요구 사항을 관리하고 코드 리뷰를 효과적으로 할 수 있는 기능을 제공한다. GIT 저장소 만들기 다음은 Git 명령어로 로컬에 Git 저장소(repository)를 만드는 예이다. 이 글에서는 awesome-javascript라는 이름으로 Git 저장소를 만들어 사용하겠다. $ mkdir awesome-javascript $ cd awesome-javascript $ git init Initialized empty Git repository in /Users/user/github/awesome-javascript/.git/ > Git을 설치하고 사용하는 방법은 이 글에서 설명하지 않는다. Git과 Git 사용 방법에 관한 자세한 내용은 "Pro Git"을 참고한다. GitHub의 계정에 같은 이름의 새로운 저장소를 생성한 뒤 다음과 같이 git remote 명령어로 원격 저장소를 추가한다. 이 글에서는 https://github.com/stunstunstun/awesome-javascript 경로를 원격 저장소로 사용한다. $ git remote add origin https://github.com/stunstunstun/awesome-javascript $ git remote -v origin https://github.com/stunstunstun/awesome-javascript (fetch) origin https://github.com/stunstunstun/awesome-javascript (push) > GitHub에서 저장소를 생성하는 방법은 이 글에서 설명하지 않는다. GitHub 사용 방법에 관한 자세한 내용은 GitHub 도움말을 > 참고한다. GITHUB에 이슈 등록하기 코드를 작성
github
javascript
jest
nodejs
travisci
연관 기술 스택

Argo CD

Circle CI

Go CD

Jenkins