메뉴 바로가기 검색 및 카테고리 바로가기

한빛미디어

독자리뷰

주니어 개발자라면 꼭 읽어보자!

mvstat***

|

2024-02-09

개발자를 위한 최소한의 실무 지식

‘사수가 필요한 개발자’를 위한 현장 맞춤 실무 가이드

  • 저자 : 김현정 , 이재효
  • 출간 : 2024-01-23

 

"개발자를 위한 최소한의 실무지식"이라는 책을 읽어보고 싶었던 11년차 개발자이자 초보 팀장인 나. "나는 리뷰어다" 신청하고 활동하게 되면서 2월달에 관심 가진 책을 읽을 수 있어서 즐겁게 읽었다.

 

학교 다닐때나 개발자 초년생때를 생각해보면 정말 모르는게 너무 많았다는 생각이 들었다. 단순히 주어진 개발을 하는게 중요하다고 생각했는데 내가 이제서야 정립하게 된 (내 기준) 개발자의 중요 덕목(?!)은 다음과 같다.

 

개발도 결국엔 건축과 유사하다는걸 깨달을 필요가 있다. 생각의 전환이 필요하다.

유지보수까지 고려한 설계와 제대로 된 요구사항 파악 및 분석

결국은 사용자가 쓴다는걸 잊지 말아야 한다 (개발이 편한것보다 사용자가 편해야함. 고로 섬세한 개발이 필요하다)

코드의 가독성도 중요하지만 성능도 매우 중요하다! (무엇이든 돈과 연관되어 있다. 생산성~!)

모르는 게 대부분이니 그냥 배운다고 생각하고 몸을 던진다. 맨땅에 헤딩!

생성형 AI에 의지하지 말자. 머리는 굴려야 좋아진다.

넓게 보자. 드넓게~~

 

이 책의 목차는 다음과 같다. (세부 목차는 생략했다.)

[PART 1 | 학교에서 배운 이론을 실무에 적용하기]

Chapter 1. 데이터베이스의 효과적인 활용

Chapter 2. 데이터를 지키는 암호화 기법

Chapter 3. 체계적인 자원 관리

Chapter 4. 성능을 향상하는 방법

Chapter 5. 오픈소스 라이선스의 세계

 

[PART 2 | 더 나은 개발 환경 조성하기]

Chapter 6. 개발자를 위한 개발 도구

Chapter 7. 효율적인 테스팅을 돕는 도구

 

[PART 3 | 더 고급진 소프트웨어 개발하기]

Chapter 8. 좋은 코드 작성과 에러 처리

Chapter 9. 글로벌 소프트웨어 개발하기

Chapter 10. 전 세계로 통하는 클라우드 서비스

 

이번 책을 읽자마자 맨 먼저 박수를 친 부분은 데이터베이스 쿼리와 관련된 하드디스크 설명이였다. "끼야호.. 설명 좋네~"를 속으로 외쳤는데, 물리적인 하드디스크의 원리와 구조 그리고 그것과 연관된 데이터베이스까지 생각하게 된다면 주니어 개발자는 뛰어넘는 생각의 넓이를 가진다고 볼 수 있을것 같다.

 

 

물론, 플래터를 사용하지 않는 SSD를 사용하는 경우도 많지만 대용량의 데이터베이스를 서버+SSD로 사용하기엔 아직까진 HDD보단 가성비가 나오지 않을 것 같다. Primary Key, Index, Join 그리고 테이블의 구성과 분리까지 고려하여 실무에 적용한다면 보다 나은 개발자가 되지 않을까 싶다.

 

그 다음으로는 암호화 기법, HTTPS 에 대해서 간략하면서도 폭넓게 설명해주고 있어서 이런 것들이 어떤 것인지 알 수 있도록 "찍먹" 이상의 수준으로 학습할 수 있는 부분이 많았다. 와이어샤크를 사용하여 패킷 분석까지 사진으로 제공하는 모습을 보고 저자들의 지적 수준을 가늠할 수 있었다. (쌍따봉)

  • https://www.wireshark.org
  • 실행하고 네트워크 어댑터(랜카드)를 선택하면 송수신하는 패킷과 해당 패킷의 상세 내용을 알 수 있다.
  • 과거에 네트워크 보안 수업들을때 해당 프로그램을 활용해서 보안 취약점 관련하여 배웠던 기억이 생각났다.

 

 

 

대부분의 프로젝트를 하다보면 보안취약점 검사를 무조건 한다고 봐도 과언은 아닌데, 그때마다 SQL 인젝션이 꼭 있다. 그만큼 데이터베이스에 있는 데이터에 대한 보안이 대단히 민감하다. 웹 프로그램들도 그렇고 대부분 데이터베이스랑 연동되는 기능들은 SQL 쿼리를 통해 데이터를 조회하고 업데이트하게 된다. 보안이 취약하게 개발이 된 경우 SQL 인젝션을 통해 사이트 접속이나 크게는 중요 데이터를 탈취할 수 있는 문제가 발생한다. (보안에 맞게 시큐어 코딩을 해야 보안취약점 검사 통과를 할 수 있다.)

 

 

웹 프로그램에서 중요한 것중에 또 하나인 크로스 사이트 스크립트(XSS)도 대단히 중요하다. 결국엔 사용자의 중요 정보를 탈취하는 목적으로 스크립트를 삽입해서 그것을 사용자 웹브라우저가 실행하게 만드는 건데 이또한 중요한 개념이다!

 

클라우드 서비스 여러개를 개발한 입장에서 클라우드에 대한 보안을 제대로 체감했던 여러 경험이 있다. 포트 하나만 잘못 열어놓아도 공격이 많이 들어오기 때문에 그런 부분에 대한 이해도가 있느냐 없느냐가 중요한 갈림길이 되지 않을까 싶다. (클라우드는 비용이 대단히 많이 나온다. 보안사고 조심!)

 

자원관리의 경우 슈퍼컴퓨터를 좋아해서 병렬+분산 프로그래밍 관련 수업도 듣고 몇년간 관련 개발 업무를 경험했기에 해당 부분에 대한 메모리 관리에 대해서도 중요함을 체감했었다. 자바처럼 가비지 컬렉터가 존재하면 좋겠지만 병렬/분산의 경우 C언어가 성능적으로 보장이 되기 때문에 코드적 레벨에서의 메모리 반납(free)과 할당(alloc)을 잘 해놓아야 메모리 누수가 생기지 않는다. (동적 할당의 묘미...?) (이런걸 책에서 잘 설명해주고 있어서 우리 팀 막내에게도 책 사서 선물을 해줘야겠다.라는 생각이 든다.)

 

리눅스에서 자주 사용하는 메모리 누수 체크 프로그램인 valgrind도 설명해주고 있어서 놀랐다. 메모리 누수가 발생하거나 segmentation fault가 발생한 경우 valgrind를 통해서 확인하면 편안하게 확인이 가능하다. 다만 상시 동작중인 데몬형태의 프로그램은 확인하기 어렵기 때문에 gdb를 통해 원격으로 attach해서 확인하는게 바람직하다.

 

오픈소스의 경우 학생때는 라이선스 생각을 안하고 사용하는 경우가 많은데 상업용으로 사용하는 경우 제약이 많이 생긴다. 라이선스의 경우 상업적으로 사용했을때 고지해야하는 의무가 있는 경우도 있고 관련 교육을 하루 날잡아서 들은적이 있는데 보통 회사들은 아래처럼 구성이 되어있다. (LG전자의 오픈소스 관련 홈페이지 링크!)

  • https://opensource.lge.com

 

학교 다닐때는 사용하지 않았던 형상관리 시스템(Git, SVN)과 배포 자동화 도구들, 그리고 이슈 관리 프로그램들은 협업과 생산성에 중요한 역할을 하고 있다. (백업적인 측면도!) 통합개발환경인 IDE의 경우 개발의 편의성을 보장해주는 여러 플러그인을 제공해주고 있어서 컴파일, 빌드 그리고 개발에 전부분에 이르기까지 다양한 기능을 제공해주고 있는데 그런 내용들을 넓게 설명해주고 있어서 개발자에겐 정말 최소한의 실무지식이라는 말이 맞다. (박수 짝짝짝~!)

 

개발, 테스트에 이르기까지 편리한 환경 구성을 하면 정말 생산성이 오르는걸 체감할 수 있다. 거기에 좋은 코딩에 대한 생각과 실천이 중요하다. 개발은 혼자하는게 아니기 때문에 남의 코드를 보는 경우도 꽤 있다. 보통의 회사에서는 자체적인 코딩가이드를 준수하고 개발을 하기 때문에 개발 또한 "프로토콜"을 맞출 필요가 있다.

 

멀티 테넌시, 클라우드 서비스 연동, 글로벌 개발을 위한 준수해야할 점(인코딩 등), 대세가 된 SaaS에 대한 설명 등 다양한 내용들을 책에서는 설명해주고 있다. 사실 이런 부분을 다 알고 있는 개발자가 얼마나 될지는 모르겠지만 모두 다 알 필요가 있는 내용이라는 생각이 든다.

 

책에서 설명하는 키워드들, 도메인들만 잘 알아도 코딩만 하는 개발자에서 기술에 대한 전반적인 이해력을 가진 개발자로 발돋움할 수 있다고 생각한다. 그만큼 40가지 핵심기술에 대해서 깊게 고민하고 만든 책이라고 한다.

 

한줄평. 주니어 개발자라면 이 책 꼭 사라. 몇권 사서 나눠주고 싶어진다. ^^..

 

한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다. (현재 파리에서 한달살기를 하고 있어서 전자책으로 수령했습니다)



닫기

해당 상품을 장바구니에 담았습니다.이미 장바구니에 추가된 상품입니다.
장바구니로 이동하시겠습니까?