해결된 질문
작성
·
539
1
안녕하세요 태현님, 항상 강의 잘 듣고 있습니다.
강의를 들으며 프로젝트를 진행하고 있는데 배포 관련하여 여쭙고 싶어서 글 남깁니다.
현재 백엔드와 프론트엔드(안드로이드)가 나눠진 상태로 개발 중인데 이때 스웨거라던지 프론트와 소통을 위해서 base url이 필요합니다. 그러면 강의처럼 모든 개발을 끝내고 배포하지않고 먼저 배포를 하고 시작하는 방식을 택하는 것도 괜찮나요?
보통 모든 코드를 마무리하고 배포를 하는지 아니면 먼저 무중단 배포를 하고 개발을 하는지 그 방법이 궁금합니다.
감사합니다!
답변 1
2
안녕하세요! b_lion님! 정말 좋은 질문 감사드립니다~~ 😊
질문 주신 내용에 대해 하나씩 답변 드려 보겠습니다!
[1. 개발이 완료되기 전에 배포를 해도 괜찮은가?]
네, 완전 괜찮습니다! ☺️ 저 역시도 Client Side (웹 개발자 분 혹은 앱 개발자 분) 과 협업을 할 때는 API와 API 문서를 제공해 드려야 하다 보니 개발을 완료하기 전에 배포를 하는 편입니다.
그래야 프로젝트가 병렬적으로 빠르게 진행될 수 있으니까요!
또한, 개인적으로는 완성되지 않은 API를 모킹해서 올려두기도 합니다. "모킹"이라 함은, 이런 느낌입니다!
@GetMapping("/아직 만들어지지 않은 API")
public List<String> methodName(@RequestParam String data) {
// 실제 구현은 되지 않았지만, "가짜 데이터"로 A / B / C를 반환
return Arrays.asList("A", "B", "C");
}
실제 완성되지 않은 API 이더라도 스펙을 정하면 가짜 데이터를 반환해서 클라이언트 분들이 개발을 편하게 하실 수 있게 도움을 드리는 거죠! (물론 이런 모킹은 클라이언트 사이드에서도 할 수 있습니다 ㅎㅎ)
[2. 보통은 배포를 어떤 단계에 하게 되는가?]
일반적으로 새로운 프로젝트가 아닌 기존에 존재하던 프로젝트에 들어가면 (무중단) 배포 설정이나 배포 Flow가 모두 갖춰져 있을 가능성이 높아, 배포 단계에 대한 고민은 하지 않게 됩니다.
하지만 새로운 프로젝트를 하게 되면, 배포의 단계나 어느정도의 배포 설정을 해야 할지 고민이 되죠!
저는 개인적으로 다음과 같은 방식을 선호합니다.
먼저, 배포를 할 수 있을 정도로 최소한의 기능 구현을 합니다. 그 후 클라이언트 분들이 병렬적으로 작업하실 수 있게 배포를 하는데요! 이때 shell script 정도만 간단히 작성해서 중단 배포를 합니다.
무중단 배포를 설정 하려면 중단 배포를 하는 것보다는 시간이 조금 더 걸리다 보니, 우선은 기능 개발을 완성하는 것을 더 빠르게 해야 한다고 생각하는거죠! 최소한의 shell script를 작성하는 이유는 수동으로 배포를 하는 공수를 줄이기 위해서 입니다. 일종의 가성비 구간을 찾는거죠! 🙂
그 후 지속적으로 개발과 배포를 반복하다가, 기능 개발이 95% 이상 마무리 될 때 쯤 추가적인 인프라 작업을 통해 무중단 배포를 설정해줍니다! (이때 nginx의 port switching을 이용할 수도 있고, AWS의 Blue-Green 같이 LB switching을 이용할 수도 있고요~)
"먼저 서버가 돌아가게 배포는 먼저 해두되, 배포 고도화는 개발이 완료될 때 쯤 한다"로 한 줄요약 드려볼 수 있을 것 같습니다.
답변이 도움이 되었으면 좋겠습니다~ 감사합니다!! 🙇
우와 자세한 설명 너무 감사드립니다.
한 가지 더 여쭤보고 싶은데 그럼 1번에서 답변해주신 것과 같이 배포부터 하고 프로젝트를 진행하면 중간 중간 api코드를 완성 시켜서 재배포 하는 과정을 반복하면 될까요? '최소 기능 완성 전부터 배포를 해서 클라이언트와 협업하고 그 다음부터 기능을 완성해가며 재배포를 반복해도 된다'로 이해해도 괜찮은지 여쭙고 싶습니다!