응~ 배포하면 그만이야~

EntryDSM·2022년 6월 8일
75

안녕하세요! EntryDSM의 프론트엔드팀에 속해 있는 3학년 김혜준입니다. 🙇🏻‍♀️
대덕소프트웨어마이스터고등학교 입학 전형 시스템 Entry 6.0 LTS에서 메인 서비스 프론트엔드를 담당하였습니다.
누구보다 즐겁게 개발하면서 어제보다 더 멋있어지기 위하여 노력하고 있습니다.
엔트리 서비스 또는 해당 게시글에 관하여 궁금한 점이 있다면 이곳으로 연락해 주세요.
엔트리 서비스 코드가 궁금하시다면? 깃허브로 구경 오세요!


배포가 뭐야? 🍐🍐🍐🍐?

배포컴파일빌드를 통해 만들어진 산출물을 사용자들에게 공개하는 것입니다.

컴파일? 빌드? 뭐라는거야

컴파일

  • 컴파일러가 java, python, javascript와 같은 프로그래밍 언어로 작성한 소스 코드를 기계가 이해할 수 있는 바이너리 코드변환하는 과정입니다.
    (Typescript는 컴파일 후 자바스크립트로 변환됩니다.)

  • 한마디로 내가 짠 프로그래밍 언어의 코드를 기계 언어로 변환시키는 것입니다.

빌드

  • 컴파일된 코드를 사용자들에게 보여주기 위해 실행 가능한 소프트웨어 산출물로 만드는 과정입니다.
  • 빌드 도구는 소스 코드를 컴파일, 테스트, 정적 분석 등을 사용하여 실행 가능한 애플리케이션으로 자동 생성하는 프로그램입니다.
    • 계속해서 늘어나는 라이브러리의 자동 추가 및 관리 해주고 라이브러리 버전을 자동으로 동기화해줍니다.

배포

컴파일빌드를 통해 만들어진 산출물을 각각의 서버에서 동작하도록 하여 서비스를 사용자들에게 공개하는 것입니다.

이제 이해가 조금 되셨나요? 쉽게 말하자면 서비스의 공개 범위를 나만보기에서 전체공개로 돌렸다고 볼 수 있습니다.

작성한 코드를 빌드하고, 빌드가 완성된 파일을 사용자가 접근할 수 있는 환경에 배치하면 배포가 완료됩니다. → 빌드를 해서 생성된 파일을 AWS에 올리는 것을 예시로 들 수 있겠네요.

코드를 수정하고 빌드하고 테스트하고 배포까지

상당히 많은 시간이 소요됩니다. 누가 대신 빌드와 테스트, 배포까지 해줬으면 좋겠죠?

쓸데없이 소모하는 시간을 단축시키고 개발에 더 집중할 수 있을 것입니다.

개발자 대신 빌드와 테스트, 배포까지 해주는 대표적인 방법으로 CI/CD 파이프라인이 있습니다.

자 이제부터 CI / CD에 대해 알아봅시다.

개발을 공부하고 있다면 CI/CD에 대해서 다들 한 번쯤은 들어보셨을 겁니다.

→ 애플리케이션 개발 단계를 자동화하여 애플리케이션을 짧은 주기로 고객에게 제공하는 방법입니다.

애플리케이션의 통합(merge)및 테스트 단계에서부터 제공 및 배포 단계까지 지속적인 자동화지속적인 모니터링을 제공합니다. 이러한 구축을 일반적으로 CI/CD 파이프라인이라고 합니다.

CI

Continuous Integration의 약자로 지속적 통합(merge)을 뜻합니다.

→ 버그 수정이나 새로운 코드 변경이 주기적으로 빌드 및 테스트되면서 공유 리포지토리에 통합하는 것을 의미합니다.

간단히 말하자면 빌드/테스트 자동화 과정이라고 할 수 있습니다. 개발자를 위한 자동화 프로세스입니다.

1. 코드 변경사항을 주기적으로 자주 통합(merge)하기

여러 명의 개발자들이 자주 머지하지 않고 한 번에 많은 양의 코드를 머지하게 된다면 어떻게 될까요?

맞습니다. 여러분이 생각한 것처럼 많은 코드들이 충돌 나는 문제가 발생합니다.

새로운 기능의 코드를 작성하는 시간보다 충돌하는 많은 코드를 수정하는 데에 시간이 더 오래 걸릴 수 있습니다.

이러한 문제를 발생시키지 않게 가능한 작은 단위로 나눠서 주기적으로 개발하고 계속해서 통합해나가야 합니다.


  1. 개발한 코드들을 github와 같은 관리 시스템에 통합합니다.
  2. 통합한 코드가 제대로 작동하는지 빌드 및 테스트를 진행합니다.
  3. 버그가 발생하면 정리해두어 버그를 해결해야 합니다.

2. 통합 단계의 자동화

빈번하게 통합하는 것은 다 좋은데 너무 귀찮아요. 빌드하고 테스트하는 과정은 굳이 사람이 하지 않아도 되는 작업입니다.

그래서 말인데, 자동화를 사용하면 어떨까요? github에 코드를 올리면 나머지 작업인 테스트와 빌드를 프로그램이 자동으로 해주는 것입니다.

귀찮은 반복 작업은 자동화를 통해서 전부 생략되어 시간도 아끼고 복잡한 작업을 하나 덜할 수 있습니다.


  1. 개발한 코드들을 github와 같은 관리 시스템에 통합합니다.
  2. 빌드 및 테스트는 자동으로 진행되므로, 버그가 생기면 다음에 확인해서 해결합니다.

장점 장점 장점

  • 코드의 검증에 들어가는 시간이 줄어듭니다.
  • 개발 편의성이 증가합니다.
  • 좋은 코드 퀄리티를 유지할 수 있습니다.

CD

Continuous Delivery 지속적인 제공 / Continuous Deployment 지속적인 배포를 의미합니다.

지속적인 제공

→ 변경 사항이 빌드와 버그 테스트를 거쳐 리포지토리에 자동으로 업로드되는 것입니다.

효과적인 지속적인 제공을 실현하기 위해서 CI가 먼저 구축되어 있어야 합니다.

지속적인 제공의 목표는 서비스로 배포할 준비가 되어있는 코드를 확보하는 것입니다.

지속적인 배포

→ 개발자의 변경 사항을 리포지토리에서 고객이 사용 가능한 프로덕션 환경까지 자동으로 릴리스하는 것입니다.

애플리케이션 제공 속도를 저해하는 수동 프로세스로 인한 프로세스 과부하 문제를 해결합니다.

품질 저하 없이 최대한 빨리 사용자에게 새로운 기능을 제공할 수 있습니다.

강력하고 신뢰할 수 있는 자동화 배포를 구축하면 하루에도 여러 번 이루어지는 릴리스에도 걱정 없습니다 :)

한 번 써보면 장점을 몸소 느낄 수 있을걸 🤩

개념만 보고 실제로 사용을 안 해보면 장점을 들어도 아 그렇구나 하고 넘길 수 있습니다.

하지만 실제로 CI/CD 파이프라인을 구축하여 사용해 본다면 다음 프로젝트를 진행할 때 필수적으로 가져가게 될 것입니다. 하하하

프론트엔드 & 백엔드 상관없이 해당 파트의 배포를 해야 하는 때가 온다면 CI/CD 파이프라인을 구축해 보세요!
CI/CD 파이프라인 구축하여 서비스를 배포하는 경험은 누구나 쉽게 해볼 수 있는 경험이 아니랍니다.

대표적인 CI/CD 종류

기억해두고 나중에 사용해 보세요. Jenkins와 Github Actions을 쉽게 접하실 수 있을거에요.

  • Jenkins
  • CircleCI
  • TravisCI
  • Github Actions

글을 마무리 지으며

이번 글에서 CI/CD 파이프라인에 대해서 다루어 보았습니다.

쉽게 정리한 글이지만, 여러분들이 읽으시면서 처음 보는 개념도 있고 이해하기 어려운 내용들도 있을 수도 있습니다.

프로젝트를 진행하면서 배포, CI/CD는 빼먹고 갈 수 없는 단계입니다.

지금 당장 이해하기 어렵겠지만 프로젝트를 진행하고, 전공 공부를 하면서 CI/CD 파이프라인을 구축해야 하는 때가 올 것입니다. 그 때를 위하여 미리 예습하는 것도 나쁘지 않겠죠? 😄

참고 문서

profile
대덕소프트웨어마이스터고등학교의 입학전형시스템을 개발하고 있는 팀 EntryDSM입니다. https://velog.io/@entrydsm 에 이어 전공 지식을 공유하기 위해 블로그를 개설하게 되었습니다.

7개의 댓글

comment-user-thumbnail
2022년 6월 10일

컴파일러가 java, python, javascript와 같은 프로그래밍 언어로 작성한 소스 코드를 기계가 이해할 수 있는 바이너리 코드로 변환하는 과정입니다.

타입스크립트는 컴파일 후 자바스크립트로 변환됩니다 ~

1개의 답글
comment-user-thumbnail
2022년 8월 2일

I love reading through a post that will make people think. Also, thanks a lot for allowing me to comment here! If you want to know about https://spanishdictionary.cc/spanish-to-english. Maybe this game will be useful to you after stressful working hours. Let's experience this fun with me.

답글 달기
comment-user-thumbnail
2022년 10월 17일

It is wonderful to be here with everyone, I have a lot of knowledge from what you share, to say thank you, the information and knowledge here helps me a lot https://wordpuzzles.io/

답글 달기
comment-user-thumbnail
2024년 2월 21일

I like that idea, but really it's probably better just to go with the old tried and true method of getting free stuff by taking customer surveys for free rewards, such as https://jacklistens.net which will reward you with a free burger from jack in the box.

답글 달기
comment-user-thumbnail
2024년 3월 1일

Great breakdown of coding distribution! Collaboration is key. If you're passionate about coding, share your experiences in the JackListens survey through the link. Let's keep the conversation going! https://jacklistens.net

답글 달기
comment-user-thumbnail
2024년 5월 29일

Thanks for sharing this information. I really like your blog post very much. You have really shared a informative and interesti blog post with people. https://www.syauqiprinting.com/

답글 달기