GitLab을 이용한 CICD Pipeline 구축 - GitLab 설치

GitLab은 코드 저장소와 자동화된 CICD pipeline을 구축할 수 있도록 도와주는 DevOps 소프트웨어다. 여기에서는 GitLab을 설치해서 git 프로젝트를 만들고 git 명령을 이용해서 clone, push, pull 을 해볼 것이다....

Gitflow

Git은 버전 관리 시스템이고 GitFlow는 Git의 분기 모델이다. 프로젝트는 기능개발, 핫픽스, 스테이징, 릴리즈 등의 다양한 분기를 가진다. Gitflow는 제품 개발에 사용 할 수 있는 워크플로우를 Git으로 체계화했다.gitflow는 git을 이용한 워크플로우 모델일 뿐이다. 따라서 git이 가지고 있는 기능만으로 gitflow를 그대로 따라 갈...

AWS CodePipeline를 이용한 CICD 화경 구성

AWS CodePipeline는 애플리케이션 릴리즈 파이프라인의 자동화를 위해서 사용하는 완전관리형 CICD 서비스다. 사용자는 CodePipeline를 GitHub, GitLab, BitBucket, CodeCommit 등과 연결해서 릴리즈 파이프라인을 구성 할 수 있다. 나는 ECS 애플리케이션을 CodePipeline를 통해서 개발&배포 하는 환경을 ...

Nexus3로 private maven repository 구성

사내에서 Git, Docker Image Registry, Maven Repository, PyPI, Gem, YUM, DEB등의 저장소를 운영하려면 격리된 환경에 각 목적에 맞는 소프트웨어를 설치해서 운영해야 한다. 엄청나게 귀찮은 작업이 아닐 수 없다. 하지만 이런 저런 이유로 Private Repository 시스템을 구성이 필요한 경우가 있다. 금융...

Continuous integration

소프트웨어 엔지니어링에서 CI는 모든 개발자의 작업 사본을 공유하고, 하루에 여러 번(수시로 혹은 짧은 간격으로) 병합하는 프로세스를 말한다. 1991년 Grady Booch가 CI라는 용어를 처음 제안했으나 당시에는 여러 번 통합하는 것을 권유하지는 않았다. XP(eXtreme programming)에서는 하루에 한번이상 통합할 것을 권하고 있다. CI는...

Continuous delivery

Continuous delivery(CD 혹은 CDE, 지속적인 전달)는 팀이 짧은 주기로 소프트웨어를 생산하는 방식으로 소프트웨어를 안정적으로 출시할 수 있도록하는 엔지니어링 방식이다. 빠른 속도와 잦은 빈도로 소프트웨어를 개발하고, 테스트를 끝내고 출시하는게 목표다. 이 접근법을 이용하면 응용 프로그램을 보다 점진적으로 개선하고 변경 사항을 업데이트 할...

Go언어에서의 TDD

여기에서 사용한 테스트 코드는 에서 다운로드 할 수 있다.클라우드와 MSA와 의 등장으로 (2016년 6월)TDD가 재조명 받고 있다. TDD의 큰 단점 중 하나는 제대로 적용하려면 상당히 많은 시간과 노력이 필요하다는 점이다. 특히 여기 저기 연동되는 라이브러리나 소프트웨어가 많은 경우 테스트가 굉장히 복잡해지는데, 복잡해지는 만큼 테스트의 신뢰성도 함께...

AWS Elastic Beanstalk

AWS Elastic Beanstalk는 EC2, S3, SNS, CloudWatch, Auto Scaling, Elatic Load Balancer과 같은 다양한 AWS 서비스를 조율해서 배치 할 수 있도록 제공되는 오케스트레이션 서비스다. Beanstalk는 운영체제를 추상화 한다. 즉 운영체제를 신경 쓸 필요 없이, 미리 구축된 환경에서 애플리케이션을...

Jenkins로 go 빌드 환경 구축

Jenkins는 CI(Continuous Integration)툴이다. Git, SVN과 같은 형상관리 툴과 연동을 해서, commit(혹은 Push)한 코드를 읽어와서 빌드하고 테스트 하고 배포를 위한 패키지를 만드는 일을 한다.최근의 소프트웨어 개발 방법론의 트랜드는 "애자일"과 "데브옵스(DevOps)로 대표 할 수 있다. 이들 개발론들은 개발과 배포...