You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 6 Next »

 신규기능 추가에서 배포까지 과정을 간략하게 설명하려고 합니다.

이것은 어떠한 개발 프로세스를 학습하고 기술하는게 아닌, 이전 회사에서 했던 경험을 바탕으로

기술하는 것이기때문에, 일반적으로 통용되는 프로세스가 아닐수 있으며

제 기억이 잘못되거나 어떠한 단계가 누락될수 있습니다.


신규기능 추가

 신규기능은 어떻게 추가하나? 사업부에서 어떠한 아이디어를 떠올려 초안을 세웁니다.

티켓이름  "PRD-001:다중기기 사용자를 대비한 멀티로그인 기능 추가"  

내용: 다중기기 사용자가 늘고있으니, 멀티로그인을 허용해라~~ 이하 생략,아니 없음

왜 시작하는지 아무도 모릅니다. 그냥 BI가 "다중기기를 허용했을때 수익률증가?"

라는 리포팅을 했을거같은 의문점이 듭니다. 

그리고 프로덕트에서 BA에게 이 티켓을 좀더 분석해 구체안(기획서)을 만들라고 던집니다. 

기획초안 작성

 이제 BI는 발빠르게 움직입니다. 도대체 이게 무슨 내용이지?  기존 작동법부터 배우기시작합니다.

유니크한 로그인이 뭔지 그떄 파악하고 , 멀티로그인이 가능함으로 할수 있는 여러가지 아이디어를 넣기시작합니다.

충돌이나는 기존 기능에대해 고려하지 못할수도 있습니다.

그리고 기획문서가 완성되기 시작하는 시점 관련 개발팀을 소집합니다.

"기획-001:멀티 로그인을 통한 플래폼 기능개선"  내용: prd에서 내용약간 추가됨

BI와 개발자는 의사소통도안되고 만나면 싸우기때문에, 아케텍트에게 개발가능하게 구체화해달라고 토쓰합니다.

분석

 각 개발팀이 모여 어떻게 누가? 어떻게 개발해야할지 분석에 들어갑니다.  PM은 이때 냄새를 맡고 , 개발관련 스케쥴을 컨트롤 하려고 합니다.

"PKIV-001-다중기기 사용자를 대비한 멀티 로그인 추가"  일단 티켓을 만들고 봅니다.  (여기서 PKIV는 프로덕트기준 개발 티켓명입니다.)

아키텍트의 참관하에 BI가 설명을하고 어떠 개발팀이 필요한지 물어봅니다.  개발팀이 거짓말 못하게

감독역활로 아키텍트는 그냥 참관합니다. QA는 QA범위 산정을 위해 미리 참관을하지만, 기존 작동되는 방식에대해 더많은 설명을 하게되며

BI를 가르쳐줍니다.  서버팀은 말합니다. "이거 부하 증가가 예상되어 로그인서버 2대더 필요합니다." 하지만 후회합니다. 괞히 부하이야기 꺼냈다가

로드 테스트팀을 붙여서 로드테스트 티켓 만들어버립니다.

PM은 잘 쉬고 있는 데브 옵스를 데리고 오고, 결국 데브옵스는 "ITO-001-개발서버두대추가" 티켓을  즉석으로 만들고

PKIV- 개발티켓에 연결시킵니다. 그리고 자기일 하러 갑니다. 

DB / 서버 / 클라이언트  결국 3팀에서 개발을 하기로 결정하고 기획문서를 재해석하기 시작합니다. 


설계

 아키텍트는 이떄부터 개발팀과함께 다이어그램을그리기 시작하며 분쟁이 시작됩니다. 이 연산은 DB가 해라? 서버가해라? 클라이언트에서해라?

아키텍트는 중재를 합니다. 반반씩 해라~~~  DB반 서버반....  이 단계가 길어집니다. PM이 개입합니다.

아무나 빨리해라~~  어느정도 아키텍쳐가 그려지는듯 하더니   이러는 동안 PRD에 수정이 일어나고,

기획서가 변경됩니다.   기획-001 수정01 - 멀티로그인허용이지만 모바일은 로그인을 허용하고,PC는 냅둡

다시 분석단계를 돌아 설계단계로 와서  아키텍/서버/DB 의 논쟁이 끝나지 않습니다.

이때 영웅이 등장하여 그문제를 해결을 합니다.  이러한 티켓번호는 분쟁이 심하면 내용으로 기억되지 않습니다.

숫자로 기억됩니다.  7782번 티켓이라고  ..... 어쨋든 이문제를 해결하고 다음 단계로 돌입하게 됩니다.

개발

PKIV-001 스토리에대한 서브 티켓으로  PKIV02-DB 다중로그인 추가 , PKIV03-서버 다중로그인추가 , PKIV04-클라이언트 다중로그인추가

PKQA-001 다중로그인 QA     각팀에서 담당해야할 메인 티켓들이 만들어집니다.  하부에 어떠한 개발 티켓이 추가되고 그룹핑이 될지는

각팀에서 알아서 합니다.  

개발팀에서는 소스변경범위를 어느정도 예측하여 QA에게 테스트 범위를 대략 알려주지만, 쓸모없습니다. 개발자가 안알려준곳에서만 문제가 생깁니다.

최신 master로부터  featured-기능 브랜치를 각각 만들고,  개발테스트가 완료되면   release-1 브랜치로 통합하여 QA를 준비합니다.

이때 데브옵스는 릴리즈 브랜치를 확인하고 DEV 배포 환경을 준비합니다. (완전 자동화는 아님)

DEV배포환경이라고 한대씩에만 하지 않습니다. 실전과같이  L7스위칭 환경 테스팅도 포함되기때문에 적어도 이중화가되어 쌍을 이루어 배포하며

실제 개발서브 도메인을 사용합니다.  host를 변경하여 테스트하는 순간 변질된 테스트이기때문입니다.

host를 변경하는 테스트를 DEV테스트라고 하지 않습니다. 이것은 로컬 테스트입니다.


DEV-QA

release/XX 브랜치를 통해 QA가 시작됩니다. 여기서 여러가지 수정사항이 생깁니다.  가끔 끼어들어온 featured/YX 빼기로 한다면

이미 통합되어 자동으로 뺄수 없습니다.(변경차를 빼는기능이 있는지 모르겠습니다.)

release 브랜치를 통해 제거사항을 수정하여 푸시를 통해 해결합니다. 여기서 DEV QA SIGN OFF가 나면 

통합 테스트 환경인  INT 단계로 넘어가게 됩니다. INT로 넘어가면 더이상 수정이 일어나면 안됩니다.

개발내용에따라, 이중화된 서버중 한대를 내리거나, 인터넷 연결선을 단절하거나 극단의 테스트를 수행하기도 합니다.


브랜치에 대한 약간의 제약 조건

  • feaured 는 개발티켓을 통해서만 땁니다. Git을 통해 수동으로 아니땁니다. 기본으로 master에서 가져오지만 선택가능합니다.
  • feaured/YY → Release/XX 머지는 기본으로 아키텍,팀장급 에서 소스리뷰 하고, 배포되어야 한다면 데브옵스도 추가합니다.
  • Release/XX → Master 머지에대한 리뷰는 데브옵스도 참관합니다. 이때의 상태는 둘다 운영에 반영가능하다란 의미입니다.
  • Master가 안정적으로 몇일간 운영되면, 데브옵스는 stable 브랜치를 땁니다.



INT-QA

INT환경은 소스통합 테스트를 위한 개발환경이 아닙니다. 소스통합에 따른 문제는 DEV단계 Release를 통해 이미 완료 되었어야하며

INT환경은 실제 서비스환경과 비슷한 테스트 환경으로,  DB가 서비스수준으로 클린해야 합니다. DEV 테스트단계에서 여러가지한

설정 조작들이 영향을 끼치는것을 방지하는 목적으로,  DEV단계에서만 추가한 설정사항이 없어서 발생하는 누락사항등도 찾아야 합니다.

즉 INT는 개발에 관련되지 않는 그 어떠한 설정 변경도 일어나면 안됩니다.

SignOff전에는 Release브랜치를 통해 QA버그 FIX가 가능합니다.  SignOFF가 일어나면 INT가 바로 운영에 반영되는것이아니라

SignOff는 Release → Master로 통합될수 있다란 의미이자  실반영을 해도 된다란 신호이며 실제로 머지가 됩니다.

여기서 끝이아니고...

데브옵스는 INT의 모든 배포 변경사항을 운영 서비스와 동일하게 롤백하고

QA를 통해 실서비스 반영과 똑같은 스텝으로 서비스 실 반영  가상 테스트 시나리오 에 돌입하게 됩니다.

데브옵스는 그동안 INT가 Release대상으로 디플로이 된것을 , Master로 변경합니다. 

이상적으로 운영 순서에따른,혹은 설정사항 순서 적용에따른 문제를 미리 찾을수 있습니다.

또한 동시에 Master를 통한 운영 디플로이를 준비합니다. (운영 빌드는 미리해둡니다.)

-만약 이때, 운영 HotFix가 발생한다면,그것은 지금것 방치되었다란 의미이며  무리하게 Fix하지 않고 다음으로 미룹니다.하지만 이경도 stable 브랜치를 통해 fix는 가능합니다.


LOADTEST-QA

INT-QA가 진행되는 동안 로드테스트가 필요한 프로젝트이면 INT에 배포된 릴리즈를 통해 LOADTEST가 진행됩니다.

개발자에게 불행이지만 LOADTEST장비는 실제 운영 장비수와 같습니다. 가장 최악 시나리오는

LOADTEST에서 실패나서  SIGN-OFF난 INT환경을 수정해야되는 케이스입니다. LOADTEST는 INT-TEST와 별개로

INT-RELEASE와 동기화하여 데일리 자동테스트 합니다.


운영

 INT-QA가 완료되었다고 운영에 반영할수 있는것은 아닙니다. 배포단계에 보안에 문제가 있는부분은 없는지? 이상하게 배포하고 있지 않는지?

"DA001-멀티로그인운영반영"  티켓이 만들어집니다.  이곳에는 각종 적용스텝,롤백플랜등이 들어있습니다. ( DB는 자동화가 아님) 

만약 하나라도 수동으로 조작하는 사항이 있다고하면, 최고 빌드관리자가 승인거부하여 프로덕에 올라갈수 없습니다.

하지만 사안에따라 프로적트 조건부 승인을 하여.... 운영에 배포가 되어집니다. 


서비스 운영에 반영후, hotfix가 생기면 아직 master가 최신개발반영소스라 master를 통해 hotfix 진행이 가능합니다. 

운영에 발생한 버그는 , QA와 분리하여 올라옵니다  "OP-001 로그인안됨  심각단계 : L2"

아주 큰 결정력이 따르지만 , 만약 긴급 롤백이 생긴다면, 개발소스를 통해 하는게 아니라... 이미 운영에 빌드완료되고 디플로이 셋트가 있기때문에

디플로이 스냅샷을 통해 롤백을 진행합니다.  하지만 이경우도 INT를 통해 진행하려고 하는 롤백 스텝으로 문제가 복구가능한지 INT가 현재의

운영과 동일하기 떄문에 INT를 통해 할수가 있습니다. 역시 우리의 만능 데브옵스가 진행합니다. (일부소스 DB제외)


정리

이 긴내용을 언급된 티켓을  생성순으로 리스트업하면


PRD-001:다중기기 사용자를 대비한 멀티로그인 기능 추가

기획-001:멀티 로그인을 통한 플래폼 기능개선

PKIV-001-다중기기 사용자를 대비한 멀티 로그인 추가
PKIV02-DB 다중로그인 추가
PKIV03-서버 다중로그인추가
PKIV04-클라이언트 다중로그인추가

ITO-001-개발서버두대추가

PKQA-001 다중로그인 QA
여러가지 이슈

DA001-멀티로그인운영반영

OP-001 로그인안됨 심각단계 : L2


위와같이 한가지 개발 프로세스가 PRD를 통해서 연관 작업을 모두 파악할수 있으며

반대로, 장애 이슈를 통해서도 이 이슈의 태초의 이슈인 프로덕 요구사항을 파악할수가 있습니다.

폭포수는 단점으로 지적이되지만, 적어도 폭포가 어떻게 떨어지는지 파악이 가능합니다.



















  • No labels