"한빛미디어 서평단 <나는리뷰어다> 활동을 위해서 책을 협찬 받아 작성된 서평입니다."

나는 개발자다.
요즘은 좀 줄어들긴 했지만
주변에서 AI 때문에 개발자 망하는거 아니냐는 말을
아주아주 많이 들어왔다.
그런데 내가 느끼기에는
AI의 발전으로 개발자의 효율성이 좋아졌을 뿐
AI가 개발자를 대체하는 것은 어려울 것 같다.
생성형 AI는 비유하자면 랜덤 가챠와 같다.
유저가 자연어로 간소화된 기능 위주의 요구사항을 이야기하면
AI가 수많은 프로그래밍 언어와 프레임워크 중
적합한 것들을 조합해서 결과물을 내놓는다.
그러면 그 결과물의 구성요소는 말 그대로 랜덤으로 발생한다.
요구사항이 디테일해지면 디테일해질수록
랜덤 요소가 줄어들지만
개발자가 아닌데 기술 스택을 고려하고
아키텍쳐를 구상할 수 있을까?
결국 AI라는 거대한 파도가 닥쳐올때 개발자는
구경만 하는 유저의 포지션이 아니라
파도에 올라타는 주도자의 포지션이 되어야 한다.
그런 의미에서 이 책,
소프트웨어 아키텍처 The Basics는
아주 좋은 지침서가 되어줄 것이다.
소프트웨어 아키텍처에 대한 책들은
이미 시중에 많이 출간되어있다.
하지만 한빛의 OREILLY 시리즈는
개발자들 사이에서는 근본으로 불리는 시리즈다.
그 중에서도 소프트웨어 아키텍처 The Basics의 1판인
Fundamentals of Software Architecture는
교보문고에서 평점 9.7점을 받은 아주 인기있는 책이다.
2판에서는 AI 시대에 발맞춰
AI를 옵션이 아닌 기본 전제로 가정하였다.
또한 다양한 아키텍처 스타일을 추가하여
개발자에게 다양한 선택권을 제공하였다.
이 책에서는 다양한 예시를 통해
아키텍처를 설명하고 있다.
예를 들어 음식 주문 시스템을 개발할 때
포장 손님에게는
음식 수령 시간과 매장 위치 정보를 제공해야 한다.
따라서 외부 지도 서비스를 통합해야 하는데
서드파티 시스템이 고장나면
메인 시스템에의 신뢰성도 떨어지게 되고
따라서 아키텍처 특성을 과도하게 명세하지 않아야
서비스의 쾌적함이 증가하게 된다.
이 예시에서는
아키텍트가 불필요한 취약성을 설계에 도입하는 것을
항상 경계헤야 한다는 이야기를 하고 있다.
혹시 프로덕트를 개발할때
이런 설계적인 요소들을 고민하고 있지 않았다면
이 책이 큰 도움이 될 수 있을 것이다.
혹시 비개발자인데 이 책이 흥미롭다면?
도전해볼 가치가 있다고 생각한다.
비개발자들에게 바이브코딩을 가르쳐보면
신선한 아이디어가 가득하다.
그리고 LLM을 활용한 MVP 개발도 하루면 해낸다.
하지만 늘 문제인게
디버깅과 기능 추가다.
디버깅은 에러 메시지를 복사해서
LLM에게 던져주는 행위를
무한 반복하는 방법으로 해결한다 하더라도
기능 추가는 복잡도가 훨씬 높다.
비개발자들은 단순히 원하는 기능을 AI에게 요청한다.
하지만 아까도 말했듯 요청이 상세하지 않다면
AI의 판단하에 랜덤으로 기능 구현이 이루어지고
기존 코드와의 호환성에 문제가 생기게 된다.
이때 아키텍처에 대한 이해가 있다면
좀 더 원활히 기능을 추가 할 수 있다.
아키텍처는 소프트웨어의 전체적인 설계도이기 때문에
머릿속에 설계도가 들어있다면,
AI에게 설계도를 보여준다면,
유저가 원하는대로 기능의 추가와 제거가 가능하며
당연히 랜덤요소도 줄어들게 된다.
이는 개발자에게도 해당한다.
설계도 없는 프로그램 구현은
언젠가 대참사를 불러일으킨다.
안그런 직업이 있겠냐마는
개발자는 항상 공부해야 한다.
부족한 부분을 채우면서
동시에 새로운 것들을 더해야 한다.
특히 급속히 발전하는 AI시대에 접어들어
새로운 것들을 더해나가는 행위는
선택이 아니라 의무가 되었다.
C언어가 등장했을 때
그것이 근본이 아니라며
변화를 거부한 사람들은 도태되었다.
나는 AI도 마찬가지라고 생각한다.
LLM이 짜주는 코드는 근본이 없다며 외면할게 아니라
LLM을 효율적인 도구로 받아들이고
새로운 기술로 더함과 동시에
부족했던 부분을 채워주는 도구로 사용하는 것이
올바른 방향이라고 생각한다.








