2008.07.07

부와 명예를 거머쥘 수 있는 7가지 기술②

Mitchell Ashley | Network World

안정적인 직장을 유지하고, 더불어 더욱 큰 가치를 창출해 낼 수 있는, 그래서 새로운 직장을 보장 받고 차세대 IT 애플리케이션과 소프트웨어 제품 개발에 참여할 수 있는 7가지 기술 중 나머지 4가지에 대해 살펴보도록 하겠다.

4. SaaS 멀티테넌트(multi-tenant) 및 확장 기술

기업용 수요 맞춤형 애플리케이션, 또는 웹 기반 제품 또는 서비스를 이야기할 때 SaaS는 빠지지 않는 항목 중 하나이다. 현재 IT 업계에서 가장 뜨겁게 달아오른 분야 중 하나이기도 하다. 그러나 SaaS는 새로운 분야인만큼 새로운 과제도 많이 만들어내고 있으며, 일부 영역은 기술인력의 부족이 심각한 경우도 있다. 그 중 가장 심상치 않은 것 중 하나가 바로 멀티테넌트라 불리는 것인 듯하다. 이는 한 개의 호스트 온라인 애플리케이션을 이용해 두 명 이상의 고객을 지원할 수 있는 능력을 의미한다.

우선 멀티테넌트란 새로운 개념부터 짚어보자. 현재 사용하고 있는 애플리케이션들이 복잡한 기업들의 구조적 특징을 적절히 지원해주고 있지 않는가? 그렇지 않다. 보통 일반적인 경우 한 개의 기업 또는 SME/SBM에만 특화되어 있는 경우가 많다. 수백, 수천 개의 회사들의 복잡한 요구 조건들을 모두 적용한다고 상상해 보라. 마치 수천 명의 개인 사용자들의 입맛을 일일이 맞추는 것과 다를 바가 없다.

멀티테넌트는 모든 설정들이 사용자들에 의해 변경될 수 있도록 만들어져 있다. 조건 설정이 유연한 이유는 모든 기업들이 다 똑 같은 기준으로 제품 또는 서비스를 바라보는 것이 아니기 때문이다. 사용자 별로 그들 개인 또는 조직의 필요에 맞는 조건을 손수 지정할 수 있는 여지를 마련해 주어야 하기 때문에 고정된 조건이 없는 것이다. 멀티 테넌트 환경의 또 다른 과제는 바로 확장성이다. 소프트웨어를 사용하는 모든 사용자들의 요구 조건을 충족시키기 위해서는 똑같은 데이터베이스, 클러스터 디자인, 전송 관리 디자인 등을 사용해서는 안 된다. 각각의 사안 별로 차별화된 모습을 보여줘야 하는 것이다.

만약 이런 화두들을 잘 이해하고 해결해 SaaS 애플리케이션을 사용한다면, 극소수 전문가들 중 한 사람이라고 할 수 있다. 비록 SaaS 애플리케이션을 당장 사용하지 않더라도, 이와 비슷한 시스템 또는 소프트웨어 설계 기술 및 경험들이 결국 이후 SaaS 환경으로 옮기는데 많은 도움이 될 것이다. 만약 애플리케이션의 다음 세대가 웹 애플리케이션이고, 이들이 SaaS 구성 요소들을 구축하고 있을 경우, 또는 SaaS 애플리케이션들로만 구성될 경우, 지금이야 말로 이들 기술을 연마할 수 있는 가장 좋은 기회이고, 다른 사람들과 차별화할 수 있는 기회이다.

5. 보안 코드 작성 기술

모든 개발자들은 코드를 작성한다. 그러나 보안 코드를 작성할 줄 아는 사람들은 많지 않다. 관리자들 중 소수만이 아는 코드이기 때문에, 보안 코드를 아는 개발자들은 다른 개발자들에게 보안 코드에 대한 설명을 해주면서 가치 있는 인물로써 거듭나게 된다.

보안코드는 버퍼 오버플로(buffer-overflow) 공격이나 레이스 조건들을 막기 위해 작성하는 경우도 있지만, 그 이외의 이유 때문에 작성하는 경우도 많다. 점점 더 많은 수의 애플리케이션들이 웹 기반 형태로 바뀌고 있고, 대다수의 경우 SaaS 애플리케이션의 형태로 변화하고 있다. 이에 따라 SaaS 애플리케이션에 대한 해커들의 공격도 더욱 거세질 가능성이 높다. 외부의 공격에 가장 먼저 노출될 수밖에 없는 웹의 특성상 안전한 소프트웨어 개발 과정이 필수적이다. SQL 인젝션, 크로스 사이트 스크립팅, 매직 URL 및 기타 숨겨진 형식들, 데이터 유출 예방, 웹 서비스 보안 방안, SSL의 그릇된 적용 등은 모두 소프트웨어 개발자들이 보안 코드를 작성하는데 있어 고려해야 할 이슈들이라 할 수 있다.

보안 코드 작성을 시작할 때 도움을 줄 수 있는 정보들을 찾고 싶다면, 하워드 르블랑(Howard LeBlanc)과 비에가(Viega)의 ‘소프트웨어의 19가지 치명적인 죄(19 Deadly Sins of Software), 그리고 오닐(O’Neil)의 ‘웹 서비스 보안"이라는 두 가지 책을 참고하기 바란다.

6. QA 자동화 및 공식 추적 능력

만약 당신이 QA 담당자라면, 이미 좋은 직업을 가지고 있다 말할 수 있다. 특히 만약 QA 테스팅을 자동화하고, 상황에 맞는 적절한 공식을 찾아내며, 소프트웨어 개발 및 QA의 질적 향상을 위해 이러한 공식들을 활용할 줄 아는 사람이라면, 이미 당신은 특별한 직업을 보유한 것이나 마찬가지이다.

특히 소프트웨어 사이를 돌아다니는 무수히 많은 버그들을 잡아내는 QA도 중요하지만, 스스로 테스트를 자동화시켜 관련 지식들을 소프트웨어 제작 과정에 활용할 수 있는 능력을 갖춘 QA는 더욱 남다른 인정을 받는다. 소프트웨어 개발자들도 록밴드의 리드 싱어나 기타 플레이어가 될 수 있다. 그러나 밴드 전문가들은 드럼과 베이스야 말로 록밴드의 질을 결정하는 가장 중요한 요소라고 말한다. 그러므로 "개발자들을 사랑하고, QA를 믿어라."

QA 전문가로써 없어서는 안될 인물로 거듭나고 싶은가? 그렇다면 자동화에 치중하라. 필자가 경험했던 테스트 중 가장 훌륭했던 테스트는 자동화 비율이 90%까지 웃돌았던 테스트였다. 소프트웨어는 정식 출시되기 전에 수백 수천 번씩 테스트를 거친다. 하지만 이런 테스트 방식은 이미 구시대의 방식이라고 할 수 있다.

물론 새로운 기능은 수동으로 테스트해야 한다. 그러나 기존 기능들은 자동으로 테스트할 수 있도록 시스템이 갖춰져 있어야 한다. 그렇게 하지 않으면 CTO들이나 VP들이 잠을 잘 수가 없을 정도로 바빠질 수밖에 없다. 동료는 물론 상사와 경영진에게 이런 일련의 자동화된 테스트 시스템에 대해 적극적으로 설명하라. 성공의 가능성이 더욱 높아질 것이다. 자동화 기능을 이용한 테스트 결과를 적절히 활용할 경우, 이미 좋은 성과를 내고 있는 개발업체들의 업무 효율까지도 높일 수 있다.

7. 언제나 환영 받는 자격증

자격증 중에 당신에게 해가 될 만한 것은 아무것도 없다. 사실 사람들은 자격증의 가치에 대해 평가하고 또 따지기를 좋아한다. 자격증 취득 성적이 A+였는지, MCTS 자격증과 MCSE 자격증 중 어떤 것이 더 괜찮은지, CISSP 자격증에 대한 채용 담당자들의 인식은 예전에 비해 얼마나 바뀌었는지, 더불어 지원하려는 기업의 채용 담당자가 자격증과 실제 업무 능력 간의 상관관계를 어떻게 설정하고 있는지 등에 대해 왈가왈부 하곤 한다. 그러나 결국 어떤 자격증이든 채용 여부를 결정하는데 있어서는 긍정적인 역할을 한다는 것만은 분명한 사실이다. 자격증을 딴다고 해서 손해 볼 건 없다는 뜻이다.

자격증은 당신이 일정 수준의 기술을 갖췄음을 증명하는 수단이다. 자격증이 있다고 해서 반드시 기업들의 선택을 받거나 하지는 않겠지만, 적어도 그 가능성을 높여준다는데 그 의의가 있다. 오늘날과 같이 경기가 어려울 때는 항상 기업 입장에서 당신을 소모품이 아닌 놓치기 아까운 인재로 인식할 수 있도록 지속적으로 노력해야 한다.



2008.07.07

부와 명예를 거머쥘 수 있는 7가지 기술②

Mitchell Ashley | Network World

안정적인 직장을 유지하고, 더불어 더욱 큰 가치를 창출해 낼 수 있는, 그래서 새로운 직장을 보장 받고 차세대 IT 애플리케이션과 소프트웨어 제품 개발에 참여할 수 있는 7가지 기술 중 나머지 4가지에 대해 살펴보도록 하겠다.

4. SaaS 멀티테넌트(multi-tenant) 및 확장 기술

기업용 수요 맞춤형 애플리케이션, 또는 웹 기반 제품 또는 서비스를 이야기할 때 SaaS는 빠지지 않는 항목 중 하나이다. 현재 IT 업계에서 가장 뜨겁게 달아오른 분야 중 하나이기도 하다. 그러나 SaaS는 새로운 분야인만큼 새로운 과제도 많이 만들어내고 있으며, 일부 영역은 기술인력의 부족이 심각한 경우도 있다. 그 중 가장 심상치 않은 것 중 하나가 바로 멀티테넌트라 불리는 것인 듯하다. 이는 한 개의 호스트 온라인 애플리케이션을 이용해 두 명 이상의 고객을 지원할 수 있는 능력을 의미한다.

우선 멀티테넌트란 새로운 개념부터 짚어보자. 현재 사용하고 있는 애플리케이션들이 복잡한 기업들의 구조적 특징을 적절히 지원해주고 있지 않는가? 그렇지 않다. 보통 일반적인 경우 한 개의 기업 또는 SME/SBM에만 특화되어 있는 경우가 많다. 수백, 수천 개의 회사들의 복잡한 요구 조건들을 모두 적용한다고 상상해 보라. 마치 수천 명의 개인 사용자들의 입맛을 일일이 맞추는 것과 다를 바가 없다.

멀티테넌트는 모든 설정들이 사용자들에 의해 변경될 수 있도록 만들어져 있다. 조건 설정이 유연한 이유는 모든 기업들이 다 똑 같은 기준으로 제품 또는 서비스를 바라보는 것이 아니기 때문이다. 사용자 별로 그들 개인 또는 조직의 필요에 맞는 조건을 손수 지정할 수 있는 여지를 마련해 주어야 하기 때문에 고정된 조건이 없는 것이다. 멀티 테넌트 환경의 또 다른 과제는 바로 확장성이다. 소프트웨어를 사용하는 모든 사용자들의 요구 조건을 충족시키기 위해서는 똑같은 데이터베이스, 클러스터 디자인, 전송 관리 디자인 등을 사용해서는 안 된다. 각각의 사안 별로 차별화된 모습을 보여줘야 하는 것이다.

만약 이런 화두들을 잘 이해하고 해결해 SaaS 애플리케이션을 사용한다면, 극소수 전문가들 중 한 사람이라고 할 수 있다. 비록 SaaS 애플리케이션을 당장 사용하지 않더라도, 이와 비슷한 시스템 또는 소프트웨어 설계 기술 및 경험들이 결국 이후 SaaS 환경으로 옮기는데 많은 도움이 될 것이다. 만약 애플리케이션의 다음 세대가 웹 애플리케이션이고, 이들이 SaaS 구성 요소들을 구축하고 있을 경우, 또는 SaaS 애플리케이션들로만 구성될 경우, 지금이야 말로 이들 기술을 연마할 수 있는 가장 좋은 기회이고, 다른 사람들과 차별화할 수 있는 기회이다.

5. 보안 코드 작성 기술

모든 개발자들은 코드를 작성한다. 그러나 보안 코드를 작성할 줄 아는 사람들은 많지 않다. 관리자들 중 소수만이 아는 코드이기 때문에, 보안 코드를 아는 개발자들은 다른 개발자들에게 보안 코드에 대한 설명을 해주면서 가치 있는 인물로써 거듭나게 된다.

보안코드는 버퍼 오버플로(buffer-overflow) 공격이나 레이스 조건들을 막기 위해 작성하는 경우도 있지만, 그 이외의 이유 때문에 작성하는 경우도 많다. 점점 더 많은 수의 애플리케이션들이 웹 기반 형태로 바뀌고 있고, 대다수의 경우 SaaS 애플리케이션의 형태로 변화하고 있다. 이에 따라 SaaS 애플리케이션에 대한 해커들의 공격도 더욱 거세질 가능성이 높다. 외부의 공격에 가장 먼저 노출될 수밖에 없는 웹의 특성상 안전한 소프트웨어 개발 과정이 필수적이다. SQL 인젝션, 크로스 사이트 스크립팅, 매직 URL 및 기타 숨겨진 형식들, 데이터 유출 예방, 웹 서비스 보안 방안, SSL의 그릇된 적용 등은 모두 소프트웨어 개발자들이 보안 코드를 작성하는데 있어 고려해야 할 이슈들이라 할 수 있다.

보안 코드 작성을 시작할 때 도움을 줄 수 있는 정보들을 찾고 싶다면, 하워드 르블랑(Howard LeBlanc)과 비에가(Viega)의 ‘소프트웨어의 19가지 치명적인 죄(19 Deadly Sins of Software), 그리고 오닐(O’Neil)의 ‘웹 서비스 보안"이라는 두 가지 책을 참고하기 바란다.

6. QA 자동화 및 공식 추적 능력

만약 당신이 QA 담당자라면, 이미 좋은 직업을 가지고 있다 말할 수 있다. 특히 만약 QA 테스팅을 자동화하고, 상황에 맞는 적절한 공식을 찾아내며, 소프트웨어 개발 및 QA의 질적 향상을 위해 이러한 공식들을 활용할 줄 아는 사람이라면, 이미 당신은 특별한 직업을 보유한 것이나 마찬가지이다.

특히 소프트웨어 사이를 돌아다니는 무수히 많은 버그들을 잡아내는 QA도 중요하지만, 스스로 테스트를 자동화시켜 관련 지식들을 소프트웨어 제작 과정에 활용할 수 있는 능력을 갖춘 QA는 더욱 남다른 인정을 받는다. 소프트웨어 개발자들도 록밴드의 리드 싱어나 기타 플레이어가 될 수 있다. 그러나 밴드 전문가들은 드럼과 베이스야 말로 록밴드의 질을 결정하는 가장 중요한 요소라고 말한다. 그러므로 "개발자들을 사랑하고, QA를 믿어라."

QA 전문가로써 없어서는 안될 인물로 거듭나고 싶은가? 그렇다면 자동화에 치중하라. 필자가 경험했던 테스트 중 가장 훌륭했던 테스트는 자동화 비율이 90%까지 웃돌았던 테스트였다. 소프트웨어는 정식 출시되기 전에 수백 수천 번씩 테스트를 거친다. 하지만 이런 테스트 방식은 이미 구시대의 방식이라고 할 수 있다.

물론 새로운 기능은 수동으로 테스트해야 한다. 그러나 기존 기능들은 자동으로 테스트할 수 있도록 시스템이 갖춰져 있어야 한다. 그렇게 하지 않으면 CTO들이나 VP들이 잠을 잘 수가 없을 정도로 바빠질 수밖에 없다. 동료는 물론 상사와 경영진에게 이런 일련의 자동화된 테스트 시스템에 대해 적극적으로 설명하라. 성공의 가능성이 더욱 높아질 것이다. 자동화 기능을 이용한 테스트 결과를 적절히 활용할 경우, 이미 좋은 성과를 내고 있는 개발업체들의 업무 효율까지도 높일 수 있다.

7. 언제나 환영 받는 자격증

자격증 중에 당신에게 해가 될 만한 것은 아무것도 없다. 사실 사람들은 자격증의 가치에 대해 평가하고 또 따지기를 좋아한다. 자격증 취득 성적이 A+였는지, MCTS 자격증과 MCSE 자격증 중 어떤 것이 더 괜찮은지, CISSP 자격증에 대한 채용 담당자들의 인식은 예전에 비해 얼마나 바뀌었는지, 더불어 지원하려는 기업의 채용 담당자가 자격증과 실제 업무 능력 간의 상관관계를 어떻게 설정하고 있는지 등에 대해 왈가왈부 하곤 한다. 그러나 결국 어떤 자격증이든 채용 여부를 결정하는데 있어서는 긍정적인 역할을 한다는 것만은 분명한 사실이다. 자격증을 딴다고 해서 손해 볼 건 없다는 뜻이다.

자격증은 당신이 일정 수준의 기술을 갖췄음을 증명하는 수단이다. 자격증이 있다고 해서 반드시 기업들의 선택을 받거나 하지는 않겠지만, 적어도 그 가능성을 높여준다는데 그 의의가 있다. 오늘날과 같이 경기가 어려울 때는 항상 기업 입장에서 당신을 소모품이 아닌 놓치기 아까운 인재로 인식할 수 있도록 지속적으로 노력해야 한다.



X