Better Code, Better Life

커리어 스킬(John Sonmez) 리뷰 - 3-2부 본문

Book Review/커리어 스킬

커리어 스킬(John Sonmez) 리뷰 - 3-2부

심재훈 2019. 7. 18. 17:00

3부 소프트웨어 개발에 대해 알아야 할 것 - 2

29장 테스트 주도 개발과 단위 테스트

TDD는 일단 테스트 코드를 작성한다는 점에서 일반 개발 방법과 다르다. TDD로 개발을 하게 되면 최소한으로 통과해야 하는 코드가 있기 때문에 안정적이다. 개발한 함수의 효율을 높이기 위해 코드를 수정하는 경우, 바뀐 코드가 똑같은 기능을 하는지 확인하는 테스트 코드가 생기기 때문이다. 또한 필요한 최소한의 코드만을 작성하기 때문에 코드 커버리지가 늘어난다. 코드 커버리지가 늘어나면 유지보수가 쉬워진다. TDD로 개발하게 되면 자신의 코드에 더 책임감 있어져 애자일 개발방법론과 어울러진다.
테스트는 단위테스트와 통합테스트로 나눌 수 있다. 단위테스트는 한 줄 단위로 최소한의 기능이 원하는 대로 결과를 내는지 테스트하는 코드이다. 통합테스트는 모듈(함수)을 엮거나 좀 더 큰 단위에서 테스트하는 코드이다. 테스트 코드는 소스 코드와 별도의 파일에 관리하는 것이 좋다.

 

30장 소스 제어

문서를 작성할 때나 코드를 작성할 때, 중간에 저장을 하면서 file_v1.py, file_v2.py 처럼 버전 관리를 한 경험이 있을 것이다. 이렇게 파일을 관리하면 버전간 어떤 변경사항이 있었는지 추적이 힘들다. 또한 여러 명에서 같은 프로젝트를 진행하는 경우 통합하여 관리하기가 번거롭다. 소스 제어를 하면 파일 중복을 줄이는 장점도 있다. 소스를 업로드하고 관리하는 사이트로 깃허브가 있다. 여러 오픈소스가 깃허브에 업로드되어 있고 커밋 로그를 통해 개발과정 또한 볼 수 있어 좋다. 깃허브를 편하게 이용하기 위해 깃을 이용하는데 CLI이기 때문에 진입장벽이 있을 수 있다. GUI인 소스트리로 더 편하게 이용할 수도 있다.

 

31장 지속적 통합

고객의 불만, 피드백을 듣고 바로 소스 코드를 업데이트한다. 그리고 이를 서버에 올려 배포한다. 소스 코드를 업데이트하면 배포까지의 과정을 자동화하는 것이 CI / CD이다. CI는 수정한 코드를 기존 코드와 통합하는 것이고 CD는 배포까지 하는 것이다. 이와 관련된 대표적인 툴로 Jenkins가 있다. 보통 프로젝트 규모가 클 경우, 이 툴이 유용해진다.
배포란 안정적이고 버그가 적은 코드를 24시간 작동하는 서버에 동작시키는 것이다. 자신의 컴퓨터에서 빌드하는 것과 다르게 큰 프로젝트는 여러 컴퓨터에서 로드 밸런싱 등의 기능과 함께 작동해야 한다. 그래서 배포과정은 복잡해진다. 따라서 이 번거로운 작업을 자동화해 애자일하게 개발하자는 것이 CI / CD의 의의다.

 

32장 디버깅

코드가 원하는대로 돌아가지 않을 경우, 습관적으로 print를 찍어보고 디버거를 키는 경우가 있다. 하지만 우리는 에러가 생기면 잠시 키보드에서 멀어져 문제에 대해 생각을 해봐야 한다. 가설을 세우고 손으로 시뮬레이션 해보자.
초보 개발자는 프레임워크를 익히면서 에러 문구를 많이 보지 않을까 싶다. 프레임워크를 익힐 땐 좋은 예시를 따라해보는게 제일 좋은 방법같다.

33장 코드 유지 보수

코드는 작성 시간 보다 읽는 시간이 더 길다. 고로 가독성이 중요하다. 미래의 자신이 코드를 읽고 또 읽을 것을 생각해 깔끔한 코드를 작성하도록 노력해보자. 이와 관련된 책으로 Code Complete2 와 Clean Code가 있다.

 

34장 직업과 직함

최대한 있어 보이는 직함 얻기. 가볍게 읽어보자.

35장 업무 유형

IT업계에서 할 수 있는 다양한 업무 유형을 소개하고 있다.

Comments