[Spring] Git

SANG JONG CHOI·2022년 10월 28일
0

Spring

목록 보기
7/11

CI / CD

  • 버전 관리를 자동으로 지속적으로 수행

  • CI (Continuous Integration)

    • 지속적 통합 (통합 자동화)
    • 코드에 대한 통합을 ‘지속적’으로 진행함으로써 품질을 유지
  • CD (Continuous Deploy 또는 Delivery)

    • 배포 자동화
    • 소프트웨어가 항상 신뢰 가능한 수준에서 배포될 수 있도록 지속적으로 관리하자는 개념
  • DI/CD 구현 예

    • 코드 작성 / 수정
    • Github 업로드
    • Jenkin가 자동으로 빌드하고 재 배포(톰캣 서버 자동 시작)

DevOps(데브옵스)

  • 소프트웨어의 개발(Development)와 운영(Operation)의 합성
  • 사람, 프로세스 및 기술의 합집합
  • 소프트웨어 개발자와 정보기술 전문가 간의 소통, 협업 및 통합을 강조하는 개발 환경이나 문화를 의미
  • 소프트웨어 개발조직과 운영조직 간의 상호 의존적

DevOps (데브옵스)의 특징

  • 서로 단절되었던 개발, IT 운영, 품질 엔지니어링, 보안 등을 서로 조율하고 협업하여 더욱 안정적이고 뛰어나 제품을 생산할 수 있도록 지원
  • 서비스 기획부터 개발, 운영, 테스트, 배포 등 모든 제품 개발 프로세스를 하나의 팀에서 수행
  • CI/CD를 이용해서 빌드-배포-테스트-프로세스 자동화

DevOps (데브옵스)의 목적

  • 소프트웨어 제품과 서비스를 빠른 시간에 개발 및 배포
  • 운영 프로세스의 예측 가능성, 효율성, 보안, 유지보수 가능성을 극대화
  • 자동화

DevOps (데브옵스)의 이점

  • 제품 생산 프로세스 전 과정을 자동화함으로써 제품을 더 빨리 빌드하여 고객 만족을 높여 높은 성과 달성
  • 출시 시간 단축
  • 시장과 경쟁 지형에 따른 유연한 대응
  • 시스템 안정성 및 신뢰성 유지
  • 평균 복구 시간 개선

버전 관리 시스템 (Version Control System : VCS)

  • 조직의 핵심 자산이 소스 코드의 개정과 백업 절차를 자동화하여 오류 수정 과정을 도와줄 수 있는 시스템
  • 시스템 개발 중 어떤 의미 있는 변화들을 관리하는 체계 (일련의 개발 관리 활동)
  • 의미 있는 변화들
    • 기능 개선, 오류 수정, 고객 요구사항 변경 등에 의한 소스코드 또는 산출물의 변경
  • 수행 기능
    • 여러 개발자들이 협업하며 코드를 작성하고 관리할 수 있는 기능
    • 소크코드 백업 및 이전 버전으로의 롤백 기능 등

버전 관리(형상 관리) 시스템을 사용하는 이유

  • 무언가 잘못되었을 때 복구를 도움
  • 프로젝트 진행 중 과거의 어떤 시점으로 돌아갈 수 있게 하기 위함
  • 여러 사람이 같은 프로젝트에 참여할 경우, 각자가 수정한 부분을 팀원 전체가 동기화하는 과정을 자동화
  • 소스 코드의 변경 사항을 추적
  • 소스 코드에서 주가 수정했는지 추적
  • 대규모 수정 작업을 더욱 안전하게 진행
  • 가지내기(Branch)로 프로젝트에 영향을 최소화 하면서 새로운 부분을 개발
  • Merge로 검증이 끝난 후 새로이 개발된 부분을 본류에 통합
  • 많은 오픈 소스 프로젝트에서 어떠한 형태로든 버전 관리를 사용하고 있기 때문에

형상 관리 도구

  • 소스 코드를 작성하거나 관리하는 모든 개발자뿐 아니라 디자이너, 기획자 등 파일에 대한 이력 관리가 필요한 경우에는 반드시 필요한 도구
  • 오픈소스 (무료) 대표적
    • Git
      • 프로그램 등의 소스 관리를 위한 분산 버전 관리 시스템
      • 여러 명의 개발자가 특정 프로젝트를 자신의 컴퓨터로 협업하여 개발하면서 버전을 관리할 수 있는 시스템
      • Git의 버전 관리 방식
        • 중앙 서버 컴퓨터와 여러 개의 컴퓨터들이 연결되어 모든 같은 버전의 데이터베이스 유지
        • 업데이트될 때마다 최신 버전 자동으로 생성
        • 파일들이 최신 버전으로 모든 컴퓨터에서 유지
      • Git의 특징
        • 빠른 속도
        • 단순한 구조
        • 비선형적인 개발 (수천 개의 동시 다발적인 브랜치)
        • 완벽한 분산 기능
        • 속도가 빨라서 대형 프로젝트에 적합
        • Github을 통해 웹 브라우저를 사용하여 누구나 Repository(저장소)를 만들어 사용할 수 있음

Github

  • 각 개발자들이 진행한 개발 변경 사항을 온라인에서 확인 가능한 서비스
  • 오픈 소스 배포 시 대부분 git을 통해 배포 및 관리
  • 저장 공간 무료 제공 - 소스 공개
  • private 저장 공간은 유료 계정 사용
  • repository push, pull 속도 빠르고 안정적
  • 다른 형상관리 툴과 호환성 좋음

STS에서 Git 사용

  1. STS를 사용해서 스프링 프로젝트를 Github Repository에 올리기
    • Github 로컬 리포지토리에서 push 하는 법
    • 스프링 Perspective에서 Push 하는 법
  2. 원격 리포지토리에서 로컬 리포지토리로 가져오기
  3. 수정 작업 후 push 하는 법

주의!

  • 원본 프로젝트 복사해서 백업해 둘 것
  1. STS를 사용해서 스프링 프로젝트를 Github Repository에 올리기
  • 새 저장소 생성 : spring
  • 토큰 생성 (비밀번호 대신 토큰 인증으로 변경됨)
    • Settings / Developer settings
    • Personal access tokens / Generate new token
  • 로컬 리포지토리 (저장소) 생성
  • 프로젝트 게시 하기
  1. Github 로컬 리포지토리에서 push 하는 법
    • (1) Team / Share Project : 스프링 Perspective에서
    • (2) Git Repository 선택
    • (3) 로컬 Repository에서 추가된 프로젝트 확인
    • (4) Commit 할 항목 선택
      • Git Staging
      • Commit Message 입력하고 Commit
    • (5) Push to Origin : Github Repository에 업로드
    • (6) Github에서 확인
  2. 스프링 Perspective에서 Push
    • (1) Team / Share Project
    • (2) Team / Add to Index
    • (3) Team / Commit
      • Commit Message 입력하고 Commit
    • (4) Team / Push to Origin
profile
No error, No gain

0개의 댓글

관련 채용 정보