티스토리 뷰
아키텍트의 존재와 역할에 대해
복잡한 IT 환경에 대한 밑그림을 설계하고 그것의 성공적인 운영을 책임질 수 있는 유일한 전문 직종이라는 측면에서, 아키텍트의 중요성은 아무리 강조해도 지나치지 않다.
아키텍트는 소프트웨어의 아키텍처를 설계하는 사람이다. 소프트웨어의 개발 과정에 대해 간략히 집고 넘어가면 크게 요구사항 > 설계 > 구현 > 검증의 단계가 있다. 여기서 요구사항과 설계의 역할을 맡고 있는 사람이 아키텍트라고 볼 수 있다. 국내에서도 아키텍트에 대한 중요성이 많이 강조되고 있다.
하지만 아키텍트라는 직업은 마치 바로 과장이 될 수는 없는것처럼 첫 직업으로는 가질 수 없다. 오랜 경험을 바탕으로 결정을 내리고 프로젝트를 리딩하는 일이기 때문에 많은 책임과 결정에 대한 통찰력을 필요로 한다. 내가 지금 하고 있는 일은 아키텍트와는 상관이 없고 내 능력도 아키텍트에 부합하지 않지만 아키텍트에 관한 글을 쓰는 것은 두 가지 이유가 있다.
첫째는 아키텍트가 되고 싶기 때문이고,
둘째는 아키텍트와 관련된 기술들을 배웠기 때문이다.
필자는 대학원에서 소프트웨어 공학을 전공했고 운이 좋게도 대학원 과정 중에 LG의 십년차 기술자들이 받는 카네기멜론 대학의 아키텍트 코스를 수료한.. '아키텍트를 글로 배운' 국내 소수의 사람들 중 한 명이다.
아키텍트가 전공을 한다고 해서 완전히 한 시스템을 설계하고 분석할 수 없다는 사실은 이론을 배우는 즉시 알 수 있다. 왜냐하면 설계 방법과 패턴, 스타일을 안다고 해도 모든 결정은 노하우에서 나오기 때문이다. 그렇다고 이론이 이론은 수많은 방법론과 프로세스를 배우는 게 무의미하다는 얘기는 아니다.
수십년을 현업에 종사했고 또다시 수십년을 아키텍처와 소프트웨어 공학의 연구에 매진하신 저명한 교수님들의 수업을 듣고 조언을 얻을 수 있었다는 점, 그리고 미약하게나마 뼈대라도 개발 프로세스나 설계 방법, 직접 설계를 하는데 많은 제약이 따르지만 어떤 설계가 옳고 그른지 판단하는 법 등이 2년간 얻은 결과물이라고 생각한다.
하지만 역시나 배우면서 지금 이 시기에 배우는 것이 과연 맞을까? 하는 생각은 끊임없이 들었다. 가능하다면 최대한 많은 경험을 한 뒤로 미뤘을 것이다.
국내에서는 아키텍트에 대해 많은 이슈가 있다. 기사나 칼럼들에서 찾은 이유는 크게 3가지로 정리가 된다.
1. 아키텍트를 전문적으로 양성하지 않았기 때문에
2. 아키텍트는 학습과 탐구로만 되지 않고 실전에서 경험이 크게 좌우하기 때문에
3. 아키텍트를 양성할 수 있는 환경이 아니기 때문에
마이크로 소프트에서는 공인 아키텍트가 되기 위해 최소 10년의 경력과 강력한 기술력 그리고 리더십을 요구한다. 뿐만 아니라 전략, 조직 역학, 프로세스, 커뮤니케이션 능력도 본다.
정부에서 아키텍트 양성에 노력을 기울이고 있지만 많은 전문가들이 이론과 학습만으로는 아키텍트를 기를 수 없다는 점을 우려하고 있다.
현재 국내의 아키텍트 현실에 관한 설명은 이우소프트 전규현 대표의 칼럼에 잘 나와 있다.
전규현 대표는 아키텍트를 양성하기 위한 방법 세 가지를 말했다.
첫째, 소프트웨어를 개발할 때 분석, 설계를 제대로 해서 진행하는 것
둘째, 기술적 이슈나 설계 리뷰를 전문적으로 하는 아키텍트 그룹을 운영하는 것
셋째, 아키텍트 성향에 맞는 후보를 선발하는 것
아키텍트로 성장하려면 다음과 같은 성향이나 소질이 있어야 한다. 글을 잘 쓰고, 다른 사람의 얘기를 잘 들어주고, 창의력이 좋고, 분석적으로 사고를 하고, 정보를 잘 조직화하고, 꼼꼼하며, 논리적인 사고를 하고, 문제의 핵심을 잘 찾고, 인내심이 좋아야 한다.
한 가지 더 언급할 점은 아키텍트와 소프트웨어 개발자의 역할은 많이 다르다. 둘 중 하나가 뛰어난 것은 아니며 각자의 성향이 있다는 점을 알고 있어야 한다. 뛰어난 아키텍트가 있어야 하는만큼 뛰어난 개발자도 필요하다.
앞으로 아키텍트 과정과 직간접적으로 관련된 글들을 이 카테고리에 올릴 예정이다.
참고 문헌
MS 칼럼, https://technet.microsoft.com/ko-kr/library/cc700768.aspx
이우소프트 전규현 대표 칼럼, http://www.zdnet.co.kr/column/column_view.asp?artice_id=20170810153934
'아키텍트 코스' 카테고리의 다른 글
Jenkins로 시작하는 CI/CD (Continuous Integration & Delivery) (0) | 2019.02.03 |
---|---|
Ionic Vs. React Native, 어떤 프레임워크가 크로스 플랫폼 모바일 앱 개발에 좋을까 (0) | 2018.10.15 |
Dependency Injection 이해하기 (0) | 2017.04.04 |
[Repository Pattern] Android MVP에서 사용되는 데이터 분리 패턴 (0) | 2017.04.03 |
소프트웨어 아키텍처 이론과 현실 (0) | 2016.06.18 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 소름돋는필력
- 공존이 필요해요
- git ssh 연동
- 이미지 일괄 변경
- iterms
- node.js
- 아키텍처
- go
- 쉽게 말하는법
- release build issue
- 안드로이드
- gradle
- 그리고 상상력
- MVP
- 소프트웨어 공학
- 스크럼
- multiDex issue
- 시간 관리
- Android
- 이미지 여백주기
- React Native
- 구독료 계산기
- 최은영작가님
- retrofit
- 좋은 습관이란
- 창의성을 지휘하라
- patch-packages
- 애드 캣멀
- egghead
- git 실수
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함