[Web] 웹(DevOps)

2022. 10. 18. 18:15·Programming/Web
728x90

클라우드 개발환경

최근 전통적인 개발환경 설정을 넘어 클라우드 인프라와 협업을 위한 기본적인 배경지식과 경험이 요구되고 있다. 개발환경이 점점 복잡해짐과 더불어 개발 결과물을 실제 서버로 배포하는 과정도 절차도 점점 복잡해지고 있다. 따라서 세부적인 클라우드 개발환경에 대한 어느 정도 이해가는 필요하다.

배포 프로세스

배포(Deployment)는 배치라고도 하며, 개발된 결과물을 실제 사용자에게 전달하는 작업을 말한다. 웹의 경우 운영 서버로 소스코드를 복사하고 WAS에 등록하는 과정을 의미하며, 모바일 앱의 경우 앱 스토어에 앱을 업로드하는 절차 등이 해당한다. 그 외에도 FTP(File Transfer Protocol)서버, 홈페이지 또는 깃허브 등을 통해 버전을 릴리즈(Release)하는 작업이 될 수 있다.

웹 애플리케이션 배포

이클립스에서 JSP 또는 서블릿을 실행하면 현재 프로젝트 구조를 WAR 형태로 패키징한 후 아파치 톰캣에 전달해 실행하는 구조다. 물론 로컬 서버에서는 효율성을 위해 매번 실제 WAR을 생성하지 않고 이클립스에서 내부적으로 톰캣과 연동하는 과정을 거치게 된다.

반대로 완성된 프로젝트를 운영 서버에 설치하는 경우라면 이클립스에서 프로젝트를 .war 파일로 패키징한 다음 서버에 옮기는 과정이 필요하다. 운영 서버가 리눅스라고 가정하면 개발자의 윈도우 컴퓨터에서 운영 서버에 원격으로 접속해야 하고, .war 파일을 FTP와 같은 파일 전송 프로그램을 사용해 전송한다. 만일 서버가 보안의 이유로 외부 접속이 완전히 차단되어 있는 경우라면 서버가 설치된 데이터 센터나 접속이 인가된 컴퓨터로 직접 이동해 작업해야 한다.

 

서버에 .war 파일을 복사한 다음에는 톰캣이 설치된 디렉토리의 [webapps] 폴더로 .war 파일을 위치시키면 톰캣이 자동으로 압축을 풀어 사용하게 된다.

 

톰캣의 경우 .war 파일을 원격으로 설치하고 관리하기 위한 웹 기반의 관리자 콘솔 기능을 제공하고 있으며, 대부분의 WAS가 이와 같은 도구를 포함한다. 톰캣 관리자 콘솔은 웹 기반의 UI도 제공하지만 빌드 도구에서 원격으로 직접 배포하는 방법도 제공하고 있다.

 

이클립스에서 톰캣을 실행하는 경우 톰캣의 웹 관리 도구에 접근할 수 없으며, 윈도우상에서 톰캣을 독립적으로 실행하는 경우에는 localhost:8080/manager 로 접속해 이용할 수 있다. zip 버전의 톰캣은 별도의 사용자 등록 과정이 필요하며, 윈도우 설치 버전은 설치 과정에서 관리자 아이디와 비밀번호를 등록한다.

그러나 이와 같은 방법은 다소 비효율적이며 여러 개발자가 동시에 작업하기에는 불편한 점이 많다. 또한 자동화가 이루어지지 않아 단계별로 개발자의 확인이나 테스트 등의 작업이 필요할 수도 있다. 이러한 문제점을 해결하기 위해서 데브옵스(DevOps)라 불리는 개발과 운영의 통합 인프라스트럭처가 주목받고 있다.

데브옵스

데브옵스(DevOps)란 개발(Development)과 운영(Operation)의 합성어로, 소프트웨어 개발 규모가 커지고 협업이 보편화되면서 신속한 개발과 지속적 유지보수, 배포 등의 운영을 병행하기 위한 노력을 통칭한다.

예를 들어 서비스의 개선을 위해 몇 달간의 작업 후 배포하던 전통적인 방식과 달리, 지금은 수시로 서비스를 배포하는 형태가 되었다. 또한 설치 기반이던 대부분의 서비스가 웹 기반으로 변화하였고, MSA와 클라우드 인프라를 활용하면서 서비스의 빈번한 배포가 필수요소로 자리 잡았다. 이러한 새로운 전략을 위해 개발 팀과 운영 팀이 병합되어 개발, 테스트, 배포, 운영에 이르는 애플리케이션 생명주기를 개발하게 되었는데 이를 데브옵스라고 한다.

데브옵스의 개념과 프로세스

데브옵스의 장점

  • 빠른 속도: 계획부터 배포까지 작업 속도를 빠르고 효율적으로 제공하기 때문에 시장 변화에 빠르게 대처하고 비즈니스 성과를 창출할 수 있다.
  • 빠른 배포: 새로운 기능의 릴리즈와 오류 수정 속도가 빨라진다. 따라서 고객의 요구에 빠르게 대응할 수 있다.
  • 안정성: 지속적 통합, 지속적 전달, 모니터링, 로깅을 통해 안정적인 서비스 품질을 고객에게 제공할 수 있다.
  • 확장 가능성: 복잡하거나 변화하는 시스템을 효율적으로 관리할 수 있다.
  • 협업 강화: 개발 팀과 운영 팀이 긴밀하게 협력할 수 있기 때문에 책임을 공유할 수 있다. 이로써 비효율을 줄이고 시간을 절약할 수 있다.

데브옵스의 구현

데브옵스를 구현하기 위해서는 기업 구성원들의 협력과 조직 문화가 뒷받침되어야 한다.

 

데브옵스의 구성요소

  • SCM(Source Code Management): 팀 단위의 소스코드 버전 관리, 깃, SVN 등의 도구를 사용한다.
  • CI(Continuous Integration): 빌드와 테스트의 통합, Jenkins, Travis CI 등의 도구를 사용한다.
  • CD(Continuous Deploy): 지속적인 배포, 원하는 시점에 바로 배포가 가능한 설정이 필요하다.
  • CM(Configuration Management): 서비스 설정의 통합 관리, 운영 서버 OS, 라이브러리 버전, 컴파일 등
데브옵스 참고 자료
https://cloud.google.com/devops/?hl=ko
→구글 클라우드 플랫폼
https://aws.amazon.com/ko/devops/what-is-devops/
→아마존 AWS
https://azure.microsoft.com/ko-kr/overview/what-is-devops/
→마이크로소프트 Azure

 

'Programming > Web' 카테고리의 다른 글

[Web] 웹 프로그래밍의 기초(CSS)  (0) 2022.10.19
[Web] 웹 프로그래밍의 기초(HTML)  (1) 2022.10.18
[Web] 웹(Java, JVM, JDK, IDE, Servlet Container)  (0) 2022.10.18
[Web] 웹(요약)  (0) 2022.10.18
[Web] 웹(웹 개발 트렌드)  (0) 2022.10.18
'Programming/Web' 카테고리의 다른 글
  • [Web] 웹 프로그래밍의 기초(CSS)
  • [Web] 웹 프로그래밍의 기초(HTML)
  • [Web] 웹(Java, JVM, JDK, IDE, Servlet Container)
  • [Web] 웹(요약)
arajo
arajo
  • arajo
    아라 메모장
    arajo
  • 전체
    오늘
    어제
    • 분류 전체보기 (509)
      • Language (298)
        • HTML (55)
        • CSS (11)
        • JavaScript (70)
        • TypeScript (8)
        • Python (33)
        • Java (119)
        • C (0)
        • C# (2)
      • Programming (92)
        • Programming (14)
        • Web (51)
        • Apache (1)
        • MySQL (23)
        • AWS (3)
      • Framework | Library (26)
        • Framework | Library (3)
        • Vue.js (2)
        • React.js (5)
        • React Native (4)
        • Node.js (1)
        • Ajax (1)
        • Bootstrap (8)
        • Spring (1)
        • Flutter (1)
      • etc (2)
      • 휴식 (19)
        • 책 (13)
        • 일기 (5)
        • 게임 일기 (1)
      • A (71)
        • 공부 (18)
        • 기타 (6)
        • 일 (47)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    web
    제어문
    타입스크립트
    TypeScript
    변수
    Python
    리액트
    object
    next.js
    JavaScript
    파이썬
    객체
    MySQL
    array
    react
    Java
    자바스크립트
    event
    HTML
    CSS
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
arajo
[Web] 웹(DevOps)
상단으로

티스토리툴바