본문 바로가기
728x90

Web Development/MicroService Architecture9

[MSA / Jenkins / Docker] Window Server OS에서 Jenkins 빌드/배포 자동화 구축(feat. Docker Toolbox, VirtualBox, CI/CD) ▼ 이전 글에서, Window Server OS에서 Docker와 VirtualBox를 같이 사용할 수 있도록 Docker Toolbox와 Jenkins를 설치했다. [MSA / Jenkins / Docker] Window Server OS에서 Jenkins 설치 (feat. Docker Toolbox, VirtualBox) ▼ 이전 글에서는, Window 환경에서 Docker Desktop을 활용하여 Jenkins를 설치하고 빌드/배포 자동화를 구축하였다. [MSA / Jenkins / Gitea] Webhook 이벤트 감지와 Jenkins 파이프라인을 통한 빌드/배포 자동화 devlifetestcase.tistory.com 설치를 진행하였으니, 이제 Jenkins를 사용해볼 차례다. 우선, 진행과정은.. 2023. 5. 4.
[MSA / Jenkins / Docker] Window Server OS에서 Jenkins 설치 (feat. Docker Toolbox, VirtualBox) ▼ 이전 글에서는, Window 환경에서 Docker Desktop을 활용하여 Jenkins를 설치하고 빌드/배포 자동화를 구축하였다. [MSA / Jenkins / Gitea] Webhook 이벤트 감지와 Jenkins 파이프라인을 통한 빌드/배포 자동화 방법 A to Z(feat MSA 프로젝트를 진행하며, 코드를 수정하고 반영할 때마다 각각의 서비스를 수동적으로 다시 빌드하고 컨테이너로 올려야 하는 문제를 해결하기 위해, 빌드/배포를 자동화하도록 Jenkins를 도입하 devlifetestcase.tistory.com 그러나 Jenkins, Docker는 개발자의 로컬 PC가 아닌 서버에 설치가 되어야 하고 CI/CD 환경도 서버에 구축되어야 한다. 개발자는 IDE에서 코드만 작성하면 되도록 말이다.. 2023. 5. 3.
[MSA / Jenkins / Gitea] Webhook 이벤트 감지와 Jenkins 파이프라인을 통한 빌드/배포 자동화 방법 A to Z(feat. CI/CD) MSA 프로젝트를 진행하며, 코드를 수정하고 반영할 때마다 각각의 서비스를 수동적으로 다시 빌드하고 컨테이너로 올려야 하는 문제를 해결하기 위해, 빌드/배포를 자동화하도록 Jenkins를 도입하여 구축하게 되었다. ▼ 이를 위해 이전 글에서 Docker Desktop을 통해 Jenkins를 설치했다. [MSA / Jenkins / Docker] Docker Desktop에 Jenkins 설치 방법 A to Z(feat. CI/CD) MSA 프로젝트를 진행하면서, 여러 개의 서비스를 일일히 실행하고 관리해야하는 번거로움을 탈피하기 위해서, 계획과는 다르게 Docker를 빠르게 도입하게 되었다. 그리고, 한번에 실행하고 관리할 devlifetestcase.tistory.com 이제 설치한 Jenkins를 활.. 2023. 5. 3.
[MSA / Jenkins / Docker] Docker Desktop에 Jenkins 설치 방법 A to Z(feat. CI/CD) MSA 프로젝트를 진행하면서, 여러 개의 서비스를 일일히 실행하고 관리해야하는 번거로움을 탈피하기 위해서, 계획과는 다르게 Docker를 빠르게 도입하게 되었다. 그리고, 한번에 실행하고 관리할 수 있게 Docker-Compose까지 구축하게 되었다. 이를 통해서, IDE나 cmd로 각각의 서비스를 관리하는 번거로움에서 벗어날 수 있게 되었다. 그렇다면 문제가 해결된 것일까? 그렇지 않다! 하루는 팀원이 질문을 했다. Q. 그러면, 코드 수정하거나 pull하고 나면 다시 빌드하고 컨테이너로 올려야 하는거에요? 전부 다? A. 네... 불편하긴 했지만, 구축하면서 Docker에 익숙해졌던 나는 그냥 별 생각 없이 추가 서비스를 강행해서 개발하고 있었는데, 위의 질문을 받고 이건 아니다 싶었다. 그래서 CI.. 2023. 5. 3.
[MSA / Docker] Local Private Registry 생성하기 이전에 Dockerfile을 작성할 때 FROM으로 Docker Hub에서 Docker 이미지를 불러와서 Docker 이미지를 생성하도록 했다. 그런데 이 도커 이미지에 대해서 생각해볼 필요가 있다. 현재는 테스트로 개개인이 docker를 따로 설치하여 쓰고 있는데, 원래는 서버에 docker를 설치하고 개인은 코드만 git에 올리면 서버에서 알아서 처리되도록 해야한다. 필요 시에는 개인도 docker를 설치해서 서버의 도커이미지를 불러와 사용하도록 해야한다. 그래야 이미지 중복을 막고 개발 환경이 간편해진다. 그러면 이제 도커이미지를 어디에 올릴것인가가 관건이다. 프로젝트는 VCS로 공유하고 관리한다. 그 중에서도 Github가 대표적인 예시라고 할 수 있다. 도커는 그럼 어디에서 공유할 수 있을까? .. 2023. 4. 25.
[MSA / Spring Cloud / Docker / jsp] jsp 프로젝트를 Docker Container에 올리기(feat. war & jar) Spring Boot로 작성된 프로젝트를 JAR로 패키징하여 Docker 컨테이너로 올리는 것은 자료도 많고, 큰 막힘 없이 잘 된다. 그러나 레거시 환경으로 개발하던 팀에게, 기존 환경으로도 MSA 구성이 가능하다는 것을 보여주기 위해서는 thymeleaf같은 호환되는 템플릿 엔진이 아닌 기존의 jsp를 사용하는 프로젝트도 개발해서 연동해야했다. 그리고 Docker 까지 사용하게 되었으니 이 프로젝트도 도커 컨테이너로 올릴 수 있어야 했다. 이것이 큰 과제가 되었다. - 실패 경험 - 일단 진행하면서 가장 처음으로 만난 문제는, Spring Boot가 기본적으로 jsp를 지양한다는 문제이다. 그렇기 때문에 별도 설정을 통해 프로젝트에 jsp 경로를 지정해주어야만 jsp를 사용할 수 있다. spring:.. 2023. 4. 24.
[MSA / Spring Cloud / Docker] 여러 가지 조건을 적용한 Docker Compose 구축 Why Docker Compose ? 왜 Docker Compose를 쓰게 되었는가? 그것은 이전 글에서 밝혔듯이 모든 프로젝트(서비스)를 IDE에서 관리하는 것은 필요도 없고, 비효율적이고 불편했기 때문이다. 그리고 Docker를 실무에서 사용해보고 싶은 마음이 컸는데, ChatGPT가 Docker Compose를 사용해보라는 답변까지 주었기 때문에 사용하게 되었다. 그러면 Docker는 무엇인가? 그것은 이미 많은 답변이 있다. 하지만, VMware로 가상머신을 사용했던 나로서는 기존 설명들이 너무 이론적으로만 느껴져서, 비유를 통해 쉽게 이해해보기로 했다. 일단 컨테이너를 올린 것은, 새로운 VM을 만든 것과 유사하다고 생각하면 첫 접근이 쉽다. 큰 차이가 느껴지지 않기 때문이다. 다만, 여기서 V.. 2023. 4. 24.
[MSA / Spring Cloud / Eclipse] MSA 구성을 위한 Eclipse와 IntelliJ의 차이(feat. 도커 도입 배경) 장인은 도구를 탓하지 않는다 (물론, 내가 장인이라는 뜻은 절대 아님) 내 주도로 MSA를 활용해 팀 프로젝트를 하게 되었으니, 팀원이 납득할 수 있는 환경을 조성해야 했다. 습득한 환경은 IntelliJ 였지만, 팀원들에게 유료의 IntelliJ를 권할 수는 없었다. 언어도 선택이듯이, IDE도 선택이다. IDE는 도구에 불과한 것이지 환경에 종속되어서는 안된다. 그래서 팀에서 기존으로 쓰던 IDE인 Eclipse에서 MSA 개발 환경을 구축해야했다. Eclipse에서 Spring Boot 프로젝트는 어떻게 생성하고, 프로젝트 관리는 어떻게 해야할까. Eclipse에서는 레거시 환경만 구성해보았기에 고민이 되었지만, 그간의 경험이 있으니 일단 부딪혀 보기로 했다. 그런데 생각보다 어렵지도 않았고, 프로.. 2023. 4. 24.
[MSA] Microservice Architecture 구축에 들어가며, [ Prologue ] 풀스택 개발자로 취업했지만, 게임 개발로 프로그래밍을 처음 접했던 나로서는, 기능 구현 위주의 코드를 작성하고 나면 항상 2% 부족한 기분이 들었다. C++ 교육과 정보처리기사 취득 과정에서 익힌 객체 지향, 재사용성과 유지보수성이라는 개념이 항상 마음 한 켠에 남았기 때문이다. 부족한 프로젝트 일정은, 구현 위주의 하드 코딩을 유도했고, 나중으로 미루자며 리팩토링을 방해했다. 그럼에도 코드를 최대한 다듬어보자며, 메소드를 생성하고 클래스를 나누었지만 한계가 있었다. 운이 없었던 것인지 개발자 대부분 그런 것인지는 모르겠지만, 이를 같이 생각해보고 배울 수 있는 사람도 최근까지는 만날 수 없었다. 숙명이라 생각하고 혼자 개발 공부를 시작했는데, 다행히도 최근 몇 년간 양질의 인터넷.. 2023. 4. 18.
반응형