Bluemix DevOps 활용 3편 : 새로운 기능을 추가할때 Devops를 활용하여 관리 및 추적하기



지난 시간까지 Devops와 Bluemix 서비스를 이용하여 App을 업로드하고 deploy하는 것을 배웠습니다. 1편에서는 App을 업로드하는 것을 공부하였고, 2편에서는 Bluemix 서비스를 연계해서 새로운 서비스를 활용하는 방법을 배웠습니다. 이번편에서는 새로운 기능을 추가하고 이를 Devops 상에서 어떻게 관리하고 추적하는지 알아보도록 하겠습니다. 원문은 바로가기에서 확인이 가능합니다.


< 컨텐츠 순서 >

1. Bluemix Devops를 활용하여 앱을 업로드하기 (바로가기)

2. App을 deploy하고 Bluemix 서비스와 연계하기 (바로가기)

3. 새로운 기능을 추가할때 Devops를 활용하여 관리 및 추적하기 (바로가기)



STEP1. 프로젝트에서 TRACK & PLAN 활성화하기

Bluemix Devops로 접속하여 TRACK&PLAN 버튼을 눌러서 기능을 활성화합니다. 세팅에 약간의 시간이 소요될 수도 있습니다.



이후 이렇게 TRACK&PLAN 페이지가 별도로 출력이 될텐데 좌측의 백로그를 클릭하고 이후 작업 항목 작성의 + 아이콘을 클릭하여 줍니다. 그리고 아래와 같이 추적하고자 하는 내용의 텍스트를 입력해줍니다. 샘플 복사를 원하시는 분은 원문(바로가기)에서 복사해서 붙여넣기 하세요.


그리고 원문에는 'Create a work item of type defect with the following summary: The View Database page fails to load when the database is empty.'와 같이 수행하라고 되어 있는데 방법이 확인 되질 않네요. 확인 되면 다시 정리하도록 하겠습니다.


  • As a shopper, I want a text message sent to me with the price of each item so that I don't have to check the website to view the prices

  • As a shopper, I want to organize my items by store so that I only have to input the field ID once per store instead of every item.

  • As a shopper, I want to see a graph of the price of the items I'm watching over time so I can judge if it's a good time to buy the items.

  • As a shopper, I want the prices to be retrieved automatically for me on a daily basis so I don't have to log in manually and click Get Prices.

  • As a shopper, I want the prices to be texted to me only when the price has changed so I'm not getting inundated with text messages.




STEP2. 수행 업무 기획하기

이제 백로그를 스토리로 채워보도록 하겠습니다. 이제 당신의 첫번째 스프린트를 기획할 시간입니다. 좌측 메뉴의 스프린트 계획을 눌러줍니다.



 하겠습니다. 이제 당신의 첫번째 스프린트를 기획할 시간입니다. 좌측 메뉴의 스프린트 계획을 눌러줍니다. 그리고 최소 2주 이상의 기간을 설정하고 작성을 눌러줍니다.



좌측 메뉴의 백로그를 눌러주면 앞서 작성한 스토리들의 우선 순위를 재조정 해줄 수 있습니다. 여기서 우리는 'As a shopper, I want a text message sent to me with the price of each item so that I don't have to check the website to view the prices'를 최상단에 올려주고, 'As a shopper, I want the prices to be retrieved automatically for me on a daily basis so I don't have to log in manually and click Get Prices'를 2번째에 올려줍니다.



그리고 백로그에 작성된 내용을 스프린트 1으로 옮겨줍니다. 만일 보이지 않는다면 스프린트 편집 버튼을 눌러서 스프린트1을 눌러주면 우측 스프린트가 뜨는데 좌측의 컨텐츠를 우측의 스프린트1에 올려줍니다. 



리고 각각의 아이템에 붙어 있는 → 화살표 버튼을 눌러서 start working으로 바꿔줍니다. 그러면 스프린트 계획들이 시작되게 됩니다.


STEP3. 기능 구현하기

다음으로는 'As a shopper, I want a text message sent to me with the price of each item so that I don't have to check the website to view the prices' 아이템에 기능을 구현하여 보겠습니다. SMS 메시지를 받는 기능을 구현하는 것은 다소 어려울 수 있는데 다행히 Bluemix 서비스에는 Twililo 서비스를 제공하고 있기 때문에 SMS 메시지를 받는 것을 컨트롤 할 수 있습니다.여기서는 오직 9줄의 코드 추가로 기능을 구현할 수 있습니다.



우선 Twililo 가입을 하겠습니다. 이미 가입을 했다면 상관이 없겠지만 가입을 하지 않았다면 가입 이후 Twilio 계정 SID와 인증 토큰과 휴대폰 번호가 필요합니다. 그리고 외국에서 날라오는 인증번호 SMS를 보고 최종 가입을 해줍니다.




가입 이후 대시보드에서 우측 상단에 id를 클릭하면 어카운트 메뉴가 보이는데SID와 인증 토큰 정보를 메모장 등 다른 곳에 복사를 해둡니다. 이제 준비가 완료되었습니다.



이제 앱에 Twilio 서비스를 추가하도록 하겠습니다. 다시 Devops로 돌아가서 우측 상단에 EDIT CODE 메뉴로 들어간 다음, 상단 이미지의 화살표가 가르키고 있는 대시보드 아이콘을 클릭합니다. 



그러면 대시보드가 뜰텐데 추가해놓은 서비스를 클릭합니다. 여기에서는 pricefinder가 되겠네요. 그러면 중간의 연결 박스에 있는 새로 연결을 눌러줍니다.


그러면 여러가지 서비스가 뜰텐데 상단의 검색창에 twilio를 검색해서 해당 앱을 찾아 클릭을 합니다. 그러면 SID와 인증 토큰(Auth Token)을 입력하라는 메뉴가 뜰텐데 앞서 Twilio 대시보드에서 확인한 값들을 각각에 입력하여 줍니다. 그리고 작성을 눌러서 서비스 연결을 해주고 앱을 리스테이징해야 된다면 메시지가 뜨면 리스테이징을 해줍니다.




Twilio 서비스를 사용하기 위해 이제 코드들을 추가하도록 하겠습니다. 서비스가 활성호되면 가격 정보에 맞춰서 저에게 SMS 통지가 오겠죠. 이제는 다시 DevOps로 돌아와서 EDIT CODE를 누른 뒤 requirements.txt 파일을 열고 맨 아래줄에 Twilio라고 입력한 후 저장을 눌러줍니다. 



그리고 wsgi.py 파일을 연뒤에 대략 55번째줄 쯤에 아래 내용을 입력한 후 저장을 눌러줍니다. 


from twilio.rest import TwilioRestClient


그리고 약 65번째 정도의 줄에 아래의 내용을 추가하여 줍니다.

(이 줄 앞에 공백이 있는지 확인해야 합니다)

if key.startswith('user-provided'):
    # loop through the user provided services to find the Twilio service
    for service in decoded_config[key]:
        if service['name'].startswith('Twilio'):
            twilio_creds = service['credentials']
            twilio_authToken = twilio_creds['authToken']
            twilio_accountSID = twilio_creds['accountSID']
            twilioClient = TwilioRestClient(twilio_accountSID, twilio_authToken)


Twilio 정보가 저장되었습니다. 상단의 코드가 있는지 반드시 확인을 해야 합니다. 확인 후 저장을 눌러줍니다.


for key, value in decoded_config.iteritems():
    if key.startswith('cloudant'):
        cloudant_creds = decoded_config[key][0]['credentials']
        cloudant_host = cloudant_creds['host']
        cloudant_port = int(cloudant_creds['port'])
        cloudant_username = cloudant_creds['username']
        cloudant_password = cloudant_creds['password']
        cloudant_url = str(cloudant_creds['url'])
 
        account = cloudant.Account(cloudant_username)
        login = account.login(cloudant_username, cloudant_password)
        assert login.status_code == 200
 
        db = account.database(dbname)
 
        response = db.put()
        print response.json
    if key.startswith('user-provided'):
        # loop through the user provided services to find the Twilio service
        for service in decoded_config[key]:
            if service['name'].startswith('Twilio'):
                twilio_creds = service['credentials']
                twilio_authToken = twilio_creds['authToken']
                twilio_accountSID = twilio_creds['accountSID']
                twilioClient = TwilioRestClient(twilio_accountSID, twilio_authToken)



다음은 SMS를 보내기 위한 코드 추가입니다. 계속해서 wsgi.py에서 대략 89번째 줄에 아래의 코드를 추가하여줍니다.Twilio 정보가 저장되었습니다. 상단의 코드가 있는지 반드시 확인을 해야 합니다. 확인 후 저장을 눌러줍니다. 여기서 to 뒤에 있는 번호를 자신의 휴대폰 번호가 twilio 번호로 변경합니다. 한국의 경우 +821012341234 형식으로 지정하면 됩니다. +82는 대한민국의 국가코드입니다. from은 Twilio 번호를 입력해줍니다.


def sendTextWithMessage(message):
    message = twilioClient.messages.create(to="+15555555555", from_="+15555555555", body=message)


그리고 getCurrentPrice 구문에는 가격을 체크하도록 되어 있습니다. 만약에 가격 부문 내용이 없다면 아래 내용을 추가하여 줍니다.


sendTextWithMessage("The current price of %s is %s" % (item["name"], price))


그리고 저장을 눌러주면 코드 추가는 모두 끝이 났습니다.


STEP4. Deploy하고 기능 테스트하기

다시 Devops로 돌아와서 다시 App을 재시작하여 줍니다.



그리고 App이 재시작이 되면 App을 열어서 Get Price를 누르고 나면 SMS 메시지로 알림이 올 것입니다. 만약에 가격을 업데이트 했다면 다시 메시지를 받을 수 있을 것입니다.


STEP4. 기능 추가된 버전을 Git repository로 내보내기

다시 Devops로 돌아와서 맨 왼쪽 사이드바 메뉴의 Git 메뉴를 누르면 편집된 버전을 Git으로 내보낼 수 있습니다.



메뉴를 보면 history 내역을 보고 어떤 식으로 편집이 이뤄졌는지 확인이 가능합니다.  제대로 편집이 되었다면 우측 상단의 커미트 버튼을 눌러서 편집본을 저장하고, 동기화를 눌러주면 저장소에 저장이 완료됩니다.


STEP4. 기능 완료하기

기능 편집이 완료되었음을 확인하려면 작업항목을 완료로 표시해야 합니다.

Devops 편집창에서 TRACK&PLAN 버튼을 눌러서 창을 띄운 뒤 우측에 있는 텍스트 메시징 기능을 찾아서 상태를 In Progress 아이콘으로 변경하면 해당 기능 추가가 완료되었다고 내부적으로 정리하는 셈이 됩니다.


이상으로 법을 배웠습니다. 이번편에서는 Devops를 활용하여 기능을 추가하고 관리한는 것을 배워보았습니다. Bluemix는 지금 이 순간에도 계속해서 새로운 기능이 추가되고 사용률이 낮은 기능이 폐기되거나 변경되는 등 많은 점들이 바뀌고 있습니다. 의문점이 있다면 원문과 제가 쓴 글을 번갈아 보면서 방법을 찾다보면 방법을 찾을 수도 있을 것입니다. 감사합니다.

댓글(0)

Designed by JB FACTORY