어플리케이션 개발자에게 꼭 필요한 개발 툴 사용법 (iOS, Android, Server)



앱센터 민재님께서 해주신 개발자 필수 툴에 대한 세미나 내용을 정리해봤습니당!
개발자에겐 역시 협업은 뗄레야 뗄 수 없는 존재!
협업에 도움이 되는 툴 위주로 설명해주셨으니, 참고하면 좋을 것 같아요 :)

 

1. 서버 기초 지식



정적인 웹과 동적인 웹

  • 정적인 웹
    서버에 미리 저장된 파일이 그대로 전달됩니다.

    사용자는 서버에 저장된 데이터가 변경되지 않는 한, 고정된 페이지를 보게 됩니다.

    client(user) <-> web server

  • 동적인 웹
    동적인 웹에서 서버는 사용자의 요청을 해석하여 데이터를 가공한 후 생성되는 웹페이지를 보여줍니다.

    사용자는 상황, 시간, 요청 등에 따라 달라지는 웹페이지를 보게 됩니다.
    로그인 후 사용자 정보 변경, 캐싱 등이 필요할 때 주로 사용합니다.

    client(user) <-> web server <-> application server


Socket(process)과 HTTP(web)

통신 방식을 두 분류로 구분할 수 있는데,
가장 큰 차이점은 접속 유지 여부입니다.

  • Socket
    양방향 통신
    즉, 주고 받는 것이 가능합니다!
    연결 유지와 통신 대기가 가능합니다.

  • HTTP
    일회성 통신
    보내거나, 받거나, 일회성으로 통신하게 됩니다.
    GET, POST 등의 명령을 하면 Request->, <-response 후 연결이 끊겨 버리기 때문에 소통이 불가능합니다.

 

2. Slack




  1. 업무와 일상 분할이 가능합니다.
    퇴근 후 또는 여가 생활 중 카톡으로 일적인 사진이나 문서를 받을 때의, 그 말로 형용할 수 없는 기분에서 조금이나마 벗어날 수 있게 해주는 것 같네요 :>

  2. 다양한 생산성 앱을 지원합니다.
    Github과 연동이 가능하고, 그 이외에도 다양한 앱과도 연동해서 사용할 수 있습니다.

  3. 무료로도 꽤 많은 히스토리 보존이 가능합니다.
    학생이라면 무료를 찾기 마련인데, 무료임에도 많은 이전 대화와 자료들을 확인할 수 있습니다!

  4. 워크스페이스(단체)내의채널(공지사항, 일정) 기능
    단체를 분류하고 채널 내에서 게시물의 성격에 따라 분류할 수 있습니다.

  5. 웹, 모바일앱, 데스크탑앱 등의 다양한 플랫폼을 지원합니다.

 

3. Postman (서버 필수 툴)




  1. HTTP 통신 테스트 가능합니다.
    HTTP는 단방향 통신이기 때문에 postman을 사용하면 매우 편리해질 수 있습니다.

  2. HTTP Request와 Response를 저장해둘 수 있습니다.
    결과를 저장해두면 앱 개발자들이 서버의 기능을 확인할 수 있습니다!
    서버의 기능을 명시할 수 있기 때문에 가능한 부분입니다.

  3. 컬렉션(워크스페이스), 폴더(채널) 기능이 있습니다.

  4. 컬렉션 공유가 가능합니다.

  5. mockup 서버 구축이 가능합니다.
    mockup 서버란 간단한 작업을 위해 가상의 서버에서 작업하는 것을 말합니다.

  6. 문서 생성기능이 있습니다.
    가독성이 굉장히 높고 레이아웃이 깔끔하답니당

  7. 서버 테스트 기능이 있습니다.


 

4. Github




  1. 버전 관리가 가능합니다.
    이로써 버그를 대처할 수 있다는 장점을 얻게 되겠죠 :)
    새로운 버전에서 치명적인 버그가 발생되면 우리는 Github으로 복원할 수 있습니다.

  2. 협업이 편리합니다.
    Branch를 이용하면 각자 맡은 부분은 개발하고 합칠 수 있는 merge라는 기능이 존재합니다. 하지만 같은 파일은 수정했을 경우에는 conflict가 발생할 수 있으므로 유의해야 합니다.

  3. Issues(버그, 기능, 문의)관리를 할 수 있습니다.
    이 장점 또한 협업에서 유리합니다.
    개발자(dev), 사용자(user) 모두 작성 가능합니다.
    버그와 함께 commit을 할 수 있고, 그 issue를 언제까지 마쳐야하는지 일정(기한)도 함께 올릴 수 있습니다.
    버그, 개발 예정, 추가기능, 건의사항 등을 관리하는 기능으로 아주 유용합니다.

  4. Milestone로 Issues를 결합하여 마감일을 정하는 등의 활용이 가능합니다.

  5. 터미널에서 commit과 함께 issue 완료 처리를 하려면 다음과 같은 명령어를 입력하면 됩니다.

git commit -m "fix #1"

 

Github는 Git을 사용할 수 있는 툴입니다.
따라서 Git 명령어를 알아야 합니닷

SourceTree와 같이 관리할 수 있는 툴이 있지만 모든 기능을 포함하고 있진 않기 때문에 Git 명령어를 알아두면 좋다고 하네용

Git 명령어

  • init
    git repository를 생성합니다.

  • local / remote
    사용자의 컴퓨터 / git 서버

  • commit
    변경된 내용을 comment와 함께 snapshot을 남깁니다.

  • push
    local의 commits을 remote에 반영합니다.

  • pull
    remote의 commits을 local에 반영합니다.

  • fetch
    remote의 commits을 local로 그대로 가져옵니다.

  • branch
    서로 다른 원본을 가지는 commit들로 나눠집니다.

  • clone
    local에 repository 복제합니다.

  • merge
    branch 혹은 commit 간의 내용이 다른 부분을 합칩니다. (하나의 commit)

  • fork
    github에 다른 사람의 repository를 복사합니다.
    해당 repository가 업데이트 되면 바로 반영할 수 있습니다.

  • stash
    commit으로 만들지 않은 변경 내용을 임시로 저장하는 기능으로, merge를 원하지 않을 때 사용합니다.
    이 명령어를 이용하면 충돌을 피할 수 있습니다.

  • revert 삭제하고 싶은 commit의 이전 commit을 불러올 수 있습니다.

git revert <commit number>   

위 명령어를 입력하면 revert commit message 작성하여 이전의 commit을 새롭게 commit을 하게 됩니다.

  • reset
    이전 commit 상태로 초기화합니다.

git reset --hard <commit number>  

라는 명령어를 입력하여 해당 commit으로 초기화하는 기능입니다.

  • conflict
    merge 시 remote와 local의 commits가 일치하지 않는 경우 conflict가 발생합니다.
    branch 간의 내용이 달라 auto merge가 되지 않습니다.
    이 경우에는 아래와 같이 충돌이 나게 되면 수동으로 merge 작업을 해줘야합니다.

<<(왼쪽 꺽쇠)...<< HEAD  
aaa   
=====  
bbb  
(오른쪽 꺽쇠)>>>>  

aaa 내용과 bbb 내용 둘중에 원하는 내용만 남겨두고 삭제하면 됩니다.

  • diff
    local의 commit과 다른 파일들을 다 보여줍니다.

  • status
    수정된 파일들을 보여줍니다.

  • rebase
    merge랑 비슷한 개념으로, commit을 병합하고 commit message를 수정할 수 있습니다.

rebase -i HEAD~4  

라는 명령어를 사용하여 최근 4개의 commit을 볼 수 있습니다.

pick  
pick  
pick  
sqush // -> 위의 commit 병합됩니다.

이 때 sqush라는 명령어를 쓰면 바로 위에 있는 commit 과 해당 commit이 병합됩니다.

 

직접 해보기




  • 새로운 repository 만들기
    1. local에 디렉토리를 만듭니다.
    2. teminal에서 해당 폴더로 이동합니다.

git init  

폴더 안의 수정 사항 발생하면 untracked files 이 생깁니다.

git add . 
git commit -m "commit message"  
git remote add origin <repository 주소>  
git push -u origin master  

위와 같이 하게 되면 origin에 master라는 branch가 생성됩니다.

  • pull
    1. repository에서 수정을 하게 되면 local과 remote의 내용의 차이가 생기게 됩니다.
    2. teminal 해당 폴더에서

git pull  

  • remote와 local에서 같은 파일을 수정하면 2가지 경우가 발생할 수 있습니다.
    1. conflict 발생
      수동으로 수정해야 합니다.

    2. auto merge
      자동으로 수정할 수 있습니다.

 

5. Waffle (Issues 관리 도구)

  1. 여러 프로젝트의 Issues를 한번에 볼 수 있습니다.
    github에서는 각각 repository별로만 관리 가능해서 같은 어플리케이션이라도 iOS, Android, Server의 Issues를 한번에 관리할 수 없는데, Waffle을 사용하면 가능하게 됩니다.

  2. 팀 프로젝트에서 ios, android, server 의 Issues를 한번에 관리할 수 있기 때문에 편리합니다.