그림으로 배우는 클라우드 2nd Edition
하야시 마사유키 지음, 서재원 옮김 / 영진.com(영진닷컴) / 2020년 8월
평점 :
장바구니담기


구름이 클라우드가 아닌 이유?

 

웹하드, 드롭박스, 원드라이브, 구글드라이브, 아이클라우드 등은 처음 파일 동기화 서비스로 시작하였습니다. 이러한 서비스는 파일 동기화 외 주요 사진 파일의 백업, 웹 기반 사용자 환경을 통한 파일 공유 서비스를 제공하였습니다. 이러한 서비스를 통칭하여 초기에 클라우드라고 하였습니다.

현재는 클라우드를 어떻게 정의할까요?

클라우드를 이해하기 위해서 NIST(미국 국립 표준 기술연구소)가 정한 클라우드 컴퓨팅의 정의를 참고할 수 있을 것입니다.
클라우드 컴퓨팅이란, 공유 구성이 가능한 컴퓨팅 리소스(네트워크, 서버, 스토리지, 애플리케이션 서비스)의 통합을 통해 어디서나 간편하게, 요청에 따라 네트워크를 통해 접근하는 것을 가능하게 하는 모델이다. 이는 최소한의 이용 절차 또는 서비스 공급자의 상호 작용을 통해, 신속히 할당되어 제공된다.16쪽

풀어쓰면 위와 같이 이야기할 수 있습니다. 하지만, 조금 쉽게 말하면 인터넷을 통해 사용자에게 제공하는 모든 서비스를 말한다고 할 수 있습니다. 사용자는 인터넷에 접속만 가능하면 손쉽게 이러한 서비스를 이용할 수 있습니다.

이제 클라우드는 과장되거나 부풀려진 기술이 아닙니다. 가상화 기술의 발전으로 가장 빨리 IT전반에 걸쳐 보편적인 기술로 스며들었습니다. 최근 코로나19 영향으로 화상회의 서비스와 재택근무가 확대되면서 클라우드의 의존도는 더 높아지고 있습니다. 기업 입장에서도 이제는 클라우드를 적극적으로 도입하고 있습니다.

 


그림으로 배우는 클라우드 2nd Edition
하야시 마사유키 저/서재원 역 | 영진닷컴 | 2020년 08월 25일

 

책의 초판이 2017년에 나왔습니다. 이 책은 개정판으로 새롭게 나온 책입니다. 처음 나올 당시 클라우드를 지탱하는 기술과 클라우드를 설명하기 위한 많은 용어들이 낯설기만 하였습니다. 3년이 흐른 지금 클라우드는 보편화된 기술이 되었습니다. 기술 및 마케팅 용어들도 이제 일반화되어 정리된 것을 확인할 수 있습니다.

서비스도 처음의 파일 동기화 및 파일 공유를 넘어 수많은 서비스가 생겨났습니다. 스토리지 서비스를 넘어 가상 서버, 네트워크 서비스 등의 Infrastructure as a Service는 손쉽게 이용할 수 있게 되었습니다. 요즘은 기간계 시스템을 위한 클라우드 서비스도 있습니다. 머신러닝 및 AI서비스도 클라우드에서 가능한 시대 입니다. IoT 를 위한 서비스도 많이 제공되고 있습니다.

클라우드 사업자는 크게 두 종류의 기계학습 서비스를 제공하고 있습니다. 하나는 ‘미리 준비한 기능(라이브러리)을 이용하여 사용자 스스로 기계를 학습시키는 것’이며 나머지 하나는 ‘클라우드 사업자가 미리 대량의 데이터로 학습을 시켜두고, 그 결과를 사용자에게 제공하는 것’입니다.60쪽

우리의 삶 속에 정보 처리 시스템을 구성하는 IT 환경은 계속 변화하여 왔습니다. CPU 처리 속도가 빨라졌습니다. 가상화 기술과 분산 처리 기술도 발전하였습니다. 네트워크는 빨라지고 저렴해졌습니다. 대규모 데이터 센터에 의한 규모의 경제도 가격을 내리는데 한 몫을 하고 있습니다. 클라우드 환경이 조성되는 필요 충분조건이 갖춰지게 되었습니다.

이러한 환경을 기업 사용자는 놓치지 않습니다. IT 투자 비용의 절감, 유연한 서비스 설계와 이용, 구축 및 운용 부담의 경감 등의 과제를 해결하기 위해 클라우드는 충분한 대안이 되었습니다. 여러가지 이유를 들어 목적을 분명히 정의하고 있습니다. 이러한 목적을 이루기 위해 클라우드 도입을 위한 여정에 더 많은 고민과 리소스를 투입하는 상태입니다.

클라우드 서비스를 도입하기에 앞서, 클라우드가 자사의 비즈니스 업무에 어떠한 이점을 가져다주는지를 확인하고, 도입 목적을 명확히 정리해야 합니다.
주요 목적으로는 경영 효율성의 향상, 비용 절감, 사업의 확대 및 과제 해결, 업무 프로세스 개선, 새로운 비즈니스 모델 구축, 해외 진출 가속 등을 생각해 볼 수 있습니다.98쪽

이러한 서비스 개념의 시스템 구성 및 활용은 기존 온프레미스 시스템을 활용하던 때와는 다른 사고방식이 필요합니다. 클라우드 도입의 추진 체제를 새로 수립해야 합니다. 온프레미스의 시스템을 클라우드로 이관을 하기 위한 이행 과제를 정리할 필요도 있습니다. 시스템 최적화 까지의 로드맵 수립을 통해 단계적으로 진행해야 합니다.

클라우드는 온프레미스 시스템에 비해 안정적인 운영기에 접어든 시점에 장애가 발생하기 쉽다고 알려져 있습니다. 따라서 클라우드를 이용한 시스템 구축은 장애 발생을 전제해야 합니다. 또한 장애가 발생하더라도 문제없이 운영할 수 있도록 설계하는 Design for Failure라는 사고방식이 필요합니다. 시스템에 단일 장애지점(Single Point of Failure, SPOF)을 만들지 않고, 존으로 구분한 다중화 시스템을 구축하는 등 전체 시스템의 가용성을 높이는 설계도 필요할 것입니다.62쪽

조직적으로도 변화가 필요합니다. 특히 IT부서의 역할이 중요해질 것입니다. 섀도우 IT를 방지하기 위해서 하이브리드 클라우드를 검토해야 합니다. 하이브리드 클라우드 환경에서 관리 플랫폼도 필요할 것입니다. 개발과 운영의 통합에 대한 변화도 고민을 해야만 합니다.

정규 노선과는 별도로 영업부와 총무부 등의 각 사업부들이 자체적으로 판단하여 사업부의 재량으로 SaaS를 도입하는, 이른바 ‘새도우 IT’라 부르는 케이스도 드물지 않게 발견됩니다. 클라우드 서비스를 도입할 때에는 IT 부서가 각 사업부들과 연계하여 전사적인 정보 시스템의 최적화 및 운영 관리의 확실한 일원화를 단행해야 할 것입니다.100쪽

앞으로의 IT 부서에서는 여러 클라우드를 적재적소에 채용하여 각 사업 부서에 서비스를 제공하는 역할은 물론, 효율적인 통합 관리에 대한 대응이 요구되게 될 것입니다.
4-2절에서 각 사업 부서에서 재량껏 클라우드를 도입하는 ‘섀도우 IT’가 문제가 되는 점을 소개했습니다만, ‘섀도우 IT’를 계기로 IT 부서가 전략적으로 전사적인 클라우드 도입을 추진하는 사례도 등장하고 있습니다.
IT 부서는 각 사업 부서가 사용하는 클라우드의 목적을 이해하고, ‘섀도우 IT’에 빠지지 않도록 전사적인 클라우드의 이용 상황을 파악하고 있어야 합니다. 그리하여 보다 전략적으로 공격적인 자세로 클라우드 도입을 추진함과 동시에, 클라우드 관리 플랫폼을 통한 운영 관리의 일원화를 추진하는 역할이 요구될 것으로 예상됩니다.172쪽

책은 이렇게 보편화된 클라우드의 도입에 대해 고려해야 할 많은 부분을 알려줍니다. 그 외 기본 입문서 구성인 만큼 클라우드의 정의, 제공 서비스, 클라우드를 가능하게 하는 기술에 대한 소개를 합니다. 클라우드 사업자에 대한 설명도 있습니다. 책의 저자가 일본인이라 그런지 일본 내 서비스 업체에 대한 소개가 많습니다. 우리나라의 경우 AWS, MS, ORACLE, IBM 등 글로벌 클라우드 서비스 업체가 많이 알려진 반면, 일본은 특화된 서비스를 무기로 많은 업체가 경쟁하는 체제입니다. 클라우드를 어떻게 활용하면 좋은 지에 대해서도 사례를 보여줍니다. ERP를 클라우드에서 사용하는 형태가 되고 있습니다. 빅데이터와 IoT 에서도 클라우드 사용은 점점 확대가 되고 있는 상황입니다. 정부에서도 중소기업의 클라우드 사용을 확대하기 위해 지원을 아끼지 않고 있습니다.

전체적인 내용을 하나하나 나눠 그림으로 쉽게 설명하기 때문에 클라우드를 처음 접하는 사람도 쉽게 이해할 수 있습니다. 이미 클라우를 익숙하게 사용하는 분이라면 그림으로 도식화된 내용을 통해 다시 한번 정리를 할 수 있도록 해줍니다.

구름을 영어로 클라우드라고 하는 시대는 지나갔습니다. 구름 그림이 클라우드 서비스를 뜻하는 것을 이제는 어린 아이도 압니다. IoT Edge, AI, 블록체인 등 새로운 다른 많은 기술에 비해 일반화 되고 보편화된 기술이 클라우드 입니다. 이러한 서비스를 적시에 최대한 빠르게 익숙하게 사용하느냐가 변화를 쫒아가는 지름길일 것입니다.


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo
 
 
 
데이터 시각화와 탐색 with POWER BI
마경근.서주란 지음 / 영진.com(영진닷컴) / 2020년 7월
평점 :
구판절판


시각화는 가장 효과적인 설명 방법


어떤 사실을 설명할 때 우리는 그 형식을 달리하여 표현합니다. 줄거리가 있는 설명이나 이야기일 경우는 서술식으로 씁니다. 여러 종류의 항목과 내용이 반복될 때는 개조식으로 씁니다. 물론 서술식에서 강조가 필요한 내용일 때도 개조식을 많이 사용합니다. 각 항목이나 사항의 관계를 명확히 규정하고 싶다면 도식화 하여 나태냅니다. 조금 더 나아가 데이터를 분석하고 그 결과를 한눈에 쉽게 설명하기 위해서 시각화를 이용합니다.

Power BI는 최신 정보를 통해 신속하게 의사 결정을 할 수 있는 인사이트를 제공하는 비즈니스 분석 서비스 입니다. 누구나 쉽게 시각적 보고서를 사용하여 데이터를 연결하고 모델링 및 정보를 탐색할 수 있습니다.17쪽

Powre BI는 마이크로소프트에서 만든 데이터 활용 및 시각화 도구 입니다. 모든 데이터를 원하는 방법으로 어디서나 액세스하고, 한눈에 볼 수 있도록 합니다. 회사에서 익숙하게 사용하는 엑셀과 사용법이 비슷합니다. 그래서, IT전공자나 데이터 분석 경험이 없더라도 쉽게 배울 수 있습니다. 반면에 엑셀의 그래프보다는 더욱 다양한 시각적 환경을 제공합니다. 그기에 다가 해당 도구의 Desktop 버전은 무료로 사용할 수 있습니다.

 


데이터 시각화와 탐색 with POWER BI POWER BI와 함께라면 데이터 시각화가 정말 쉬워진다
마경근, 서주란 저 | 영진닷컴 | 2020년 07월 31일

 

이 책은 Power BI를 소개하고, 그 사용방법을 알려줍니다. 기본적인 사용 및 본격 활용법을 자세하게 설명하고 있습니다. 실무사례도 3개를 포함하고 있어 실제 사용할 때도 참고할 수 있도록 하였습니다.

Power BI가 비전공자도 쉽게 데이터를 활용할 수 있는 도구인 만큼 책의 수준도 처음 사용자 수준에 쉽게 맞춰있습니다. 쉽게 따라올 수 있도록 화면을 캡쳐하여 나타냅니다. 특정 부분을 표시하여 해당 부분을 설명하고 있다는 것도 확인할 수 있습니다. 엑셀처럼 마우스 클릭만으로도 쉽게 배울 수 있는 도구라는 것을 알 수 있습니다.

하지만, 실제 데이터 분석을 하는 업무에 따라 진행되고 있습니다. 문제 정의, 데이터 수집, 데이터 변환 및 전처리, 데이터 분석 및 모델링, 시각화 순입니다. 실무의 과정을 그대로 익힐 수 있습니다.

실무사례를 소개하는 파트에서는 해당 예제를 통해 배울 수 있는 내용을 알려줍니다. 데이터에 대한 이해를 할 수 있도록 배경 지식도 같이 설명해줍니다. 그 설명을 통해 분석 범위의 한정 및 분석의 한계를 명확히 하는 것을 볼 수 있습니다. 데이터 분석이 문제를 해결하는 과정이지 문제의 답을 구하는 것은 아니라는 것을 새겨들을 필요가 있습니다.

처음부터 끝까지 책의 내용을 따라하다 보면 데이터를 분석하고 시각화하는 과정이 쉽다는 것을 알 수 있습니다. 간단한 데이터라도 Power BI를 통해 시각화 할 수 있으며, 그리는 과정에서 자유도가 높다는 것도 경험할 수 있습니다. 실제로 그 동안 손에 익었던 엑셀이 초라해 보일 수도 있습니다 . 다만, 이렇게 분석하여 시각화 한 내용을 서로 공유하기 위해서는 Desktop 버전에서는 되지 않습니다. 구독서비스인 상위 버전의 Power BI를 사용해야 합니다.

데이터 시각화를 위한 도구 및 서비스가 수없이 많이 출시되고 있습니다. 그 중 Power BI는 Windows 10 OS의 Store를 통해 쉽게 설치할 수 있습니다. 강점은 다른 도구에 비해 저렴합니다. 가격이 저렴하다고 있어야 할 기능이 없는 것은 아닙니다. 그래서, 사용자가 많이 늘어나는 것 같습니다. 이런 추세다 보니 빨리 남들보다 써보고 익히는 것이 좋은 방법 같습니다. 하나의 도구에 익숙해지면 비슷한 다른 도구를 익힐 때 필요한 학습기간도 줄어들 수 있기 때문입니다.

Power BI 같은 도구를 Self BI 도구라고도 합니다. 데이터 인텔리전스가 중요해지는 만큼 개인이 가지고 있는 데이터에 기반하여 인사이트를 도출하는 것을 스스로 할 수 있어야 합니다. 도출된 인사이트를 한번에 설명하기 가장 효과적인 방법이 시각화라고 하였듯이, 앞으로 시각화는 필수가 될 것입니다. 하나쯤 배워두자라는 생각이 든다면 Power BI로 시작하는 것이 좋을 듯 합니다.


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo
 
 
 
스마트 스피커 앱 만들기 - Alexa Skills Kit, Dialogflow, Clova Extension Kit을 이용한
타카우마 히로노리 지음, 정순관 옮김 / 영진.com(영진닷컴) / 2020년 6월
평점 :
장바구니담기


VUI의 시대에 필요한 기술

 

‘Mdir’이라는 프로그램이 있습니다. DOS용 셸관리 프로그램으로 널리 알려지면서 DOS 시절 필수 프로그램이 되었습니다. 명령어를 한글자 한글자 타이핑 해서 실행하는 것에서 벗어나 방향키와 ENTER키, FUNCTION키 만으로 컴퓨터를 쉽게 사용할 수 있었습니다. 명령어 방식에서 셸방식으로 변화는 많은 사람을 컴퓨터에 친숙하게 만들었습니다.

Windows 가 나오면서 사용자 인터페이스(User Interace, UI)는 또 한번 변화합니다. 그래픽으로 구성된 아이콘을 마우스로 조작하여 실행하는 GUI(Graphic UI) 시대가 온 것입니다. 이 GUI는 사용자를 더 친숙하게 컴퓨터 앞으로 불러모았습니다. 이제는 컴퓨터를 부팅하면 그래픽으로 된 화면은 기본이고, 마우스는 필수 입력장치가 되었습니다.

스마트폰과 태블릿 PC 가 등장하면서 스크린을 손으로 터치하는 방식이 일반화 됩니다. 일부 특수한 용도의 PC에서만 동작하던 것에서 대중화되어 버린 것입니다. 이렇게 사용자와 컴퓨터, 즉 기계와의 인터페이스는 게속 편리한 방향으로 발전하고 있습니다.

UI의 다음은 뭘까요? 사람의 목소리라고 말합니다. Voice UI의 시대가 성큼 다가왔습니다.

 


스마트 스피커 앱 만들기 Alexa Skills Kit, Dialogflow, Clova Extension Kit을 이용한
타카우마 히로노리 저/정순관 역 | 영진닷컴 | 2020년 06월 30일

 

올레TV를 신청하여 TV를 시청하고 있습니다. 올레TV를 시청하기 위한 셋톱박스는 인공지능 스피커를 탑재한 ‘기가지니’라는 셋톱박스를 사용하고 있습니다. “지니야~ TV켜’, ‘기가지니! 오늘 날씨는 어때?와 같이 물어보면 똑똑하게 말을 알아듣고 TV를 켜거나, 날씨를 알려줍니다. KT 뿐 아니라, LG U+, SKT도 비슷한 제품이 나오는 것으로 알고 있습니다. TV셋톱박스와 결합하여 스마트 스피커를 만드는 것으로 사용자에게 빠르고 친숙하게 다가온 것도 사실입니다. 기성세대는 리모콘을 찾기 바쁘지만, 아이들은 익숙하게 말로 이야기 하는 것을 볼 수 있습니다.

인공지능 스마트 스피커는 시중에 많습니다. 구글 Home, 아마존 Echo, 네이버 Clova 등 입니다. 가격도 비싸지 않습니다. 새로 구입하지 않더라도 스마트폰 자체에도 기능이 있습니다. 애플의 시리가 대표적입니다. 목소리 만으로 원하는 정보를 얻고, 방안의 기기를 조작하고, 간단한 대화까지 나눌 수 있는 시대가 되었습니다.

이런 스마트 스피커 앱들이 동작하기 위해서는 프로그램이 필요합니다. 이 책은 스마트 스피커 앱을 만드는 방법을 알려주는 책입니다. 앞에서 꺼낸 3대 스마트 스피커(구글 Home, 아마존 Echo, 네이버 Clova)를 대상으로 하고 있습니다. 네이버가 3대 스마트 스피커로 소개되고 있어 조금 의아하긴 하였는데, 책의 원저자가 일본인인 것을 확인한 순간 그럴 수 있겠다라는 생각이 들었습니다. 일본에서는 LINE의 시장 자체를 무시 못하는 것으로 알고 있습니다. Clova의 가장 큰 장점이 바로 LINE과 통화가 가능하며, 목소리로 LINE 메시지를 보낼 수 있는 장점이 있다고 소개합니다. 스마트 스피커 중 국내에서 가장 처음 출시된 제품도 네이버 제품이라는 글을 볼 수 있습니다.

책은 총 7개의 Chapter로 되어 있습니다. 하지만, 크게는 4개로 다시 구분할 수 있습니다. 처음에는 스마트 스피커의 일반적인 기능 및 개발 관련 내용에 대해 소개합니다. 그 다음에 실제 해당 제조회사에서 제공한 프로그램과 API를 이용하여 ‘스킬’을 만드는 방법을 알려줍니다. 제조사가 다른 만큼 개발하기 위한 앱도 모두 다르기 때문에 각각의 Chapter를 할애하여 소개할 수 밖에 없어보입니다. 하지만, 개발 과정의 큰 맥락은 크게 다르지 않다는 것을 확인할 수 있습니다.

스마트폰에서의 앱을 스마트 스피커에서는 스킬(액션)이라고 합니다(Amazon Echo/ Naver Clova에서는 스킬, Google Home에서는 액션). 이 책에서는 모두 스킬이라는 용어로 통일하겠습니다.20쪽

프로그램을 가장 처음 배울때 ‘Hello’를 배우듯이 기본적인 스킬로 ‘인사’ 스킬을 만듭니다. 이후 BMI를 측정하는 스킬을 개발하는 방법을 알려줍니다. 계속해서 해당 스킬의 기능을 계속 추가하는 방식으로 확장해 나갑니다.

쉽게 따라할 수 있도록 많은 부분을 직접 실제 화면을 캡처하여 설명하고 있습니다. 소스코드에 대한 설명도 쉽게 하였습니다. 책의 내용을 따라하면서 개발한 스킬은 시물레이터를 통해 모두 확인 가능합니다.

Chapter 6에서는 스마트 스피커 스킬을 개발하는 Tool을 소개합니다. Node-RED라고 하는 에디터입니다.

Node-RED란 IBM 연구소가 개발한 오픈소스 소프트웨어로, GUI(그래픽 유저 인터페이스)로 직관적으로 데이터의 흐름을 정의할 수 있는 비주얼 데이터 플로우 에디터입니다.248쪽

제조사에서 제공하는 Tool을 가지고 개발했던 것을 Node-RED로 환경을 구축하여 서로 대응하도록 하여 다시 동일한 기능을 구현하는 형태로 그 사용법을 알려주고 있습니다. 단, 이부분에 대한 설명은 구글 Home, 아마존 Echo만 설명하고 있습니다. 네이버 Clova가 빠진 것이 아쉽습니다.

마지막 Chapter에서는 개발한 스킬을 여러사람들이 사용할 수 있도록 신청하는 방법을 다루고 있습니다. 배포된 스킬은 스마트폰 앱과 마찬가지로 배포한 스킬에 대해 평가도 받을 수 있습니다.

스마트 스피커, 인공지능 스피커라고 불리기도 합니다. 언어 인식을 위한 인공지능 기술이 기반이 되어야 가능하기 때문입니다. 하지만, 이런 복잡한 인공지능 기술은 몰라도 우리가 원하는 스마트 스피커 스킬은 만들 수 있는 환경이 되었습니다. Node-RED 같은 Tool을 사용하면 노드만 연결하는 것만으로도 스킬을 만들 수 있다는 것도 확인 가능합니다.

이 책은 스마트 스피커 스킬을 처음 개발하거나, 기술에 관심이 있는 사람에게 흥미를 불러일으키기에 충분합니다. 다만, 책이 처음 나온 시점이 2018년입니다. 너무 늦게 한글로 번역된 것은 아닐까 하는 생각도 듭니다. 그럼에도 불구하고 스마트 스피커에 대한 서적이 부족한 가운데 지금이라도 나와서 쉽게 읽을 수 있게 된 것이 반갑기만 합니다.


댓글(0) 먼댓글(0) 좋아요(1)
좋아요
북마크하기찜하기 thankstoThanksTo
 
 
 
나쁜 프로그래밍 습관 - 동료들 뒷목 잡게 만드는
칼 비쳐 지음, 황현우 옮김, 체임 크라우스 감수 / 영진.com(영진닷컴) / 2020년 3월
평점 :
장바구니담기


나쁜 방법이 나쁜 것이라고 이해하는 것이 먼저!

 

시대가 점점 복잡해지고 있습니다. 이 흐름에 살아남기 위한 경쟁력으로 연결과 상호작용이 필요하게 되었습니다. 모든 면에서 협업이 필요한 시기입니다. 협업이라는 개념 자체도 참여자들이 서로의 이익을 얻기 위해 공동으로 작업하는 전통적인 개념을 넘어섰습니다. 시간과 공간 등 모든 연결된 개체에 대한 상호작용 자체를 협업으로 봐야 된다는 것입니다. 이제 더 이상 ‘내 것’, ‘네 것’을 구분하지 않게 되었다고 봐야 합니다. 독자적 기술이란 이제 소용이 없어지는 시대가 될 것이라고도 합니다. 실시간으로 새로운 기술 또는 전혀 다른 비즈니스 모델이 그 기술을 빠르게 대체하고 있기 때문입니다.

현대의 프로그램 개발 업무 자체도 협업을 강조하고 있습니다. 시중에 공개되어 있는 대부분의 프로그램 소스코드들은 오픈된 공간을 통해 공유됩니다. 많은 사람들이 참여하여 생각을 더해 계속 발전되어 갑니다. 리눅스의 개발과 발전 과정을 보면 알 수 있습니다. 오픈소스 정신으로 대변되는 이 활동은 자신이 가진 기술을 공개하면 좀더 나은 기술이 될 수 있다는 정신을 바탕으로 합니다. 마이크로소프트도 깃허브를 인수하여 자신들의 소스를 공개하기 시작하였습니다.

서로 다른 나라의 두 사람이 만났을 때 상대방의 언어와 문화를 이해해야 합니다. 영어라는 공용어를 통해 의사소통을 시도하는 것도 이 때문일 것입니다. 프로그램이라는 언어도 마찬가지 입니다. 협업을 잘하기 위해 지켜야할 일반적인 규칙과 패턴이 있습니다. 이것을 우리는 기본기라고 말합니다.

 


동료들 뒷목 잡게 만드는 나쁜 프로그래밍 습관
칼 비쳐 저/황현우 역/체임 크라우스 감수 | 영진닷컴 | 2020년 03월 20일

 

개발의 세계에는 많은 나쁜 개발 방식이 존재한다. 그리고 이런 방식은 경험이 많은 개발자들이 분노로 얼굴이 붉어지거나, 땀에 흠뻑 젖은 채 두려움에 떨게 할 수 있다. 사실, 이런 반응을 불러일으킬 만한 코드를 경력 초반에 종종 작성하게 될 것이다. 개발자로서 당신의 개발 수준을 향상시키는 방법은 안 좋은 개발 방식이 무엇인지 읽히고 이것을 피하는 것이다.7쪽

이 책은 왜 이렇게 개발하면 안되는 지를 알려줍니다. 하지만, 그 방법이 독특합니다. 실패하기 위한 조언들로 가득차 있습니다. 모든 규칙을 무시하라고 하고, 더 나쁘게 만들 수 있는 방법들을 설명합니다. 하지만 이런 글 뒤에 ‘주의하기!’라는 코너를 통해 왜 그렇게 하면 안되는지, 왜 그렇게 하면 나쁜지를 알려주는 방식입니다. 다소 가볍고 유머스러운 방식으로 재미있게 읽을 수 있도록 했다고 합니다.

책은 총 11개의 장으로 나눠져 있습니다. 변수, 조건문, 반복문 등 프로그래밍 관련 책의 구성과 다르지 않습니다. 하지만 각 장에 포함된 글꼭지들의 제목은 잘못된 프로그래밍 방법을 그대로 사용하였습니다. ‘불확실한 이름 사용하기’, ‘잘못된 타입 선택하기’, ‘서브루틴의 사이즈를 아주 크게 하기’와 같이 기존에 알고 있던 상식과는 반대되는 제목으로 부각한 것 같습니다. 책 제목에서 보듯이 동료들을 화나게 만드는 나쁜 프로그래밍 방법들 입니다. 이런 나쁜 방법들 뒤에 좋은 방법을 설명하는 것입니다. 어떤 것이 좋은 개발 방법인지 독자 스스로 비교하면서 배울 수 있도록 하였습니다.

책의 처음에 프로그래밍 도구에 대한 이야기부터 시작합니다. 프로그램을 위한 수많은 도구가 있고, 개발자마다 다른 도구를 사용합니다. 일반적인 회사에서 개발 도구를 표준화하기 위한 시도를 많이 합니다. 모두 생산성과 투입되는 리소스 관점의 효율성만 이야기되는 것 같습니다. 그보다 프로그램 개발의 본질이 무엇인지 아는 것이 중요할 것 같습니다. 도구 선정에 시간을 들이기 보다 좋은 결과물을 위해 고민하는 시간이 많아야 할 것입니다.

그 어떠한 도구도 생산성이나 만들어내는 결과물에 극적인 변화를 가져다주지 않는다. 소프트웨어 개발에 있어서 만병통치약이란 없다는 말이다(Brooks, 1995).
만약 이런 도구 선택에 관한 쓸데없는 주장을 계속한다면, 합리적으로 판단할 줄 아는 동료들이 개인의 선호는 때때로 필요에 따라 굽힐 줄도 알야야 한다고 지적할지도 모른다. 좋은 개발자는 어떤 도구를 쓰더라도 좋은 결과물을 만들어낼 수 있다는 데 자부심을 가져야 한다.22쪽

초급 개발자들에게는 꼭 지켜야 할 기본적인 규칙을 알 수 있습니다. 초급 수준을 벗어나고 지금 현재 프로그래밍을 하고 있는 현업 개발자 분들도 본인의 프로그래밍 습관을 한번 돌아볼 수 있는 계기가 됩니다. 저도 읽으면서 놓치고 있었던 부분에 대해 많이 알게 되었습니다.

개발을 할 때 보통 애자일 형태로 많이 진행합니다. 처음엔 사용자 요구사항에 대해 동작가능한 프로그램을 우선 개발 합니다. 이후 예외 처리를 합니다. 오류 메시지를 정확하게 구현 합니다. 마지막 즈음에 성능 최적화를 위해 코드를 전체적으로 리팩토링을 합니다. 하지만, 프로그램 개발 막바지로 가면서 시간이 부족할 때가 많습니다. 이렇게 되면 후반부에 진행하기로 하였던 오류 메시지 구현, 성능 개선을 위한 코드 최적화 등을 마저 완료하지 못 합니다. 처음 개발시작부터 같이 어느정도는 고려하여 진행하면 후반부에 드는 시간을 조금 줄일 수 있을 것 같습니다.

문제를 보고할 때, 확인하는 사람에 따라 보고의 위치와 내용이 달라야 한다.
사용자용 오류 메시지는 사용자의 기술 수준을 고려해서 작성해야 한다. 사용자를 특정할 만한 방법이 없다면, 사용자가 프로그래머도 아니라 상상해야 한다. stack trace와 오류 코드는 그들에게 전혀 도움이 되지 않는다. 무엇이 잘못되었는지, 그리고 잘못된 것에 대해서 무엇을 할 수 있는지를 비기술적인 언어로 명확히 설명해야 한다.155쪽

와일드카드를 사용해 임포트하는 것이 세계 최악의 프로그래밍 관행은 아니다. 시실, 몇몇 동료들은 아무 말 없이 이를 계속 밀고 나갈 수도 있다. 하지만 어떤 사람들은 이에 반대할 수도 있다.
모듈에서 가져온 것 대부분을 사용하지 않는데 모든 것을 가져오는 것은 자원을 불필요하게 차지하는 것이라는 반대 의견이 있을 수 있다. 그러나 이는 어떤 언어를 사용했느냐에 따라 다르다.
더 일반적인 반대 의견으로는, 와일드카드를 사용한 임포트가 무의식적으로 이름 충돌을 일으킬 수 있다는 것이다.169쪽

내가 만든 프로그램 소스를 공개하는 일, 쉬운 것 같으면서도 어렵습니다. 공개하는 것 자체가 실력으로 평가받게 되는 우려가 있기 때문입니다. 오픈 소스로 진행되는 프로젝트에 참여하기 위해서도 두려움이 생깁니다. 실력보다는 참여하기 위한 많은 일반적인 규칙을 이해하는 것이 필요하기 때문입니다.

협업이 중요한 시대, 프로그램 개발자 관련 많은 커뮤니티에 참여할 수 있는 힘을 기르는 것이 필요합니다. 전문성을 인정받게 되는 좋은 방법입니다. 그 과정의 시작은 쉽고 읽기 쉬운 코드를 작성하는 것입니다. 프로그램 개발을 잘하느냐 못하느냐는 그 결과물이 동작하는 것도 중요하지만 누구나 읽고 이해하기 쉬운 코드를 작성해야 된다는 것 입니다. 그리고, 잘못된 개발 방법을 가능한 피하는 것 입니다. 이 책은 이러한 과정의 시작을 도와 줄 것입니다.


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo
 
 
 
그림으로 배우는 보안 구조
마스이 토시카츠 지음, 양성건 옮김 / 영진.com(영진닷컴) / 2020년 4월
평점 :
장바구니담기


정보보안의 시작은 용어 정의부터

 

해마다 한개의 자격증을 취득하기로 하였습니다. 물론 올해부터 입니다. 다이어트 도전 처럼 항상 내일부터 보다는 나은 것 같습니다. 목표는 정보보안 기사 자격증 취득입니다. 코로나-19의 영향으로 자격시험 일정도 연기되는 바람에 무사히 필기시험 등록을 마쳤습니다. 수험서도 구했습니다. 하지만 첫장을 넘기는 순간, 너무 쉽게 생각했다는 느낌이 들었습니다. ‘이 정도 쯤이야’ 라는 착각에서 깨어나 현실이 되었습니다.

보안에 신경을 써야 할 것이 많다는 것을 수험서 두께만 봐도 알 수 있는 듯 합니다. IT에 약 20년을 몸담으면서 보안을 생활화 하면서 지냈다고는 하나, 모르는 내용이 대부분 인 것 같습니다. 기초부터 먼저 이해를 하고 수험서를 보는 것이 목표를 달성하는 지름길인 것 같습니다.

 


그림으로 배우는 보안 구조
마스이 도시카츠 저/양성건 역 | 영진닷컴 | 2020년 04월 10일

 

이 책은 네트워크 보안의 모든 것을 알기 쉽게 풀어쓴 기초 입문 서적 입니다. 읽기 쉽도록 한 페이지에 설명을 쉽게 하였습니다. 그 내용에 맞는 그림을 또 다른 한 페이지에 간단하게 그려 이해를 돕습니다. 한번에 하나의 개념을 배울 수 있도록 한 구성입니다. 제가 계속 읽고 있는 ‘그림으로 배우는’ 시리즈 중 하나 입니다.

책은 총 7개의 장으로 구성되어 있습니다. 시작은 보안의 기본 개념부터 입니다. 네트워크 통해 이루어 지는 공격, 바이러스 및 스파이웨어, 취약점에 대한 대응, 암호 및 서명과 인증, 대응을 이야기 합니다. 마지막으로는 법률과 규칙을 설명합니다. 정보보안 기사 자격증 필기 시험의 마지막 과목도 법률 과목으로 알고 있습니다. 7개의 장이라고 하지만 책이 두껍지 않습니다. 빨리 읽을 수 있습니다. 제가 원했던 책입니다. 반대로 더 깊이 있는 공부는 추가로 해야합니다.

보안을 생각할 때, 무엇으로부터 어떤 것을 지켜야 하는가를 명확하게 하지 않으면, 대책의 효과를 충분히 얻을 수 없습니다. 따라서 공격자가 무엇을 노리고 있는지, 그 목적을 생각하는 것으로부터 시작해야 합니다.14쪽

공격의 목적을 이해했다면, 그 다음으로 ‘무엇을 보호할 것인가’에 대해 생각을 해야 한다고 합니다. 우리가 보호해야 하는 것은 바로 회사의 자산 입니다. 자산에는 사람, 물건, 돈 이외에 정보 자산이 있습니다. 바로 이러한 정보자산이 이 책에서 이야기 하는 정보 보호 대상입니다.

기초 입문서 답게 개념에 대한 정의를 명확히 하는 부분이 많습니다. 명확하게 그 뜻을 이해하는 것이 역시 중요한 것 같습니다. 그 동안 흔히 쓰는 말이지만 혼동해서 사용하는 단어였을 수도 있었겠다라는 생각을 했습니다.

정보 자산에 악형향을 주는 원인이나 요인을 위협이라고 하며, 그러한 위협의 발생 가능성의 유무(발생 확률)를 위험이라고 합니다.16쪽

진짜 웹 사이트 인것처럼 위장한 가짜 웹 사이트를 준비한 뒤, 이메일 등을 통해 해당 URL로 이용자를 유도하여 입력된 ID와 비밀번호를 훔치는 수법을 피싱(Phishing)이라고 합니다.(중략)
조작된 가짜 사이트를 사용하는 방법으로 파밍(Pharming)이 있습니다. 진짜와 닯은 사이트를 사용한다는 점에서는 피싱과 비슷하지만, URL에 해당하는 IP 주소를 조작하는 준비를 한다는 것이 다릅니다.80쪽

피싱이라는 말이 그냥 쉽게 낚시라는 단어로 이해하고 있었는데, Privacy 와 Fishing의 합성어(Phising)라는 것을 정확히 알게 된 것도 수확입니다.

정보보안을 위해 모든 위험을 사전에 대응하기란 불가능 합니다. 그래서 2중 3중의 장치를 마련할 필요가 있다는 제안을 많이 하는 것을 봅니다. 그러한 이유가 대응 시간을 가질 수 있도록 하기 위함이라는 것도 알게 됩니다.

1개의 대책이 아닌 여러 대책을 조합하는 것을 심층방어라고 부르며 공격을 막는 효과를 높여주는 것 이외에도 공격에 대응하기 위한 시간을 확보하는 효과도 있습니다.56쪽

보안은 비용, 편리성, 안전성이라는 상반된 개념을 어떻게 균형있게 체계를 만들어 가느냐가 중요하다고 강조하고 있습니다. 아직까지도 보안은 “비용”이라는 인식이 강한 경영자들이 많습니다. 보안 담당자 역할은 본연의 업무를 수행하면서 겸임을 하는 것도 이 때문입니다. 본연의 업무를 수행하면서 틈틈히 작업을 하기 때문에 보안 관련 업무는 후 순위로 밀려나게 됩니다. 이러한 형태가 잘못이라고 할 수는 없지만 보안의 중요성을 강조한다면 사전 대책, 사건 처리, 사후 대응을 체계적으로 할 수 있는 조직 구성이 필요하다는 이야기로 들립니다.

조직이 관리하고 있는 시스템 이외의 서비스를 직원이 임의로 이용하는 것을 섀도우 IT라고 합니다. 이를 방지하기 위해서는 규칙을 정하는 것뿐만 아니라 편안하게 업무를 할 수 있는 환경을 사내에 준비하는 것도 필요할 것입니다.180쪽

정보보안 교육의 필요성에 대한 이야기도 놓치지 않습니다. 결국 최후의 보루는 ‘사람’이라는 것입니다. 보안은 거대한 대책보다 개개인의 보안 의식부터 조금씩 경험이 쌓여가는 것이 중요하다고 알려줍니다.

정보보안에 대해서 암호화나 인증, 방화벽 설치 등 기술적인 대책을 실시하여도, 그것을 사용하는 사람이 올바른 행동을 취하지 않으면 안전을 지킬 수 없습니다. 대응하는 방법을 몰라서 문제가 발생할 수도 있지만, 단순한 분실이나 중요 사항을 잊고 있거나, 메일을 잘못 보내는 등 휴먼 에러(Human Error)를 줄일 수 있는 대책도 요구되고 있습니다.162쪽

시작은 정보보안 기사 자격 취득이라는 목표 때문에 읽은 책 입니다. 하지만, 정보보안 관련 전반적인 큰 그림을 배울 수 있는 책이 되었습니다. 보안의 원리와 구조를 대략이나마 알게 된 것이 앞으로 계속 공부를 하는데 있어 많은 도움이 될 것 같습니다. 또 하나, 회사 생활을 하면서 보안 조직에서 요청하였던 많은 일들이 떠올랐습니다. 책의 내용과 하나 둘 이어지면서 새롭게 머리에 그려지기도 하였습니다. 새로운 보안 위협으로 부터 정보를 보호하는 일을 하고 있는 조직이 그것입니다. 오롯이 정보보안에만 집중할 수 있도록 해야 하는 필요성을 느낄 수 있었습니다. 정보보안이라는 업무, 훗날 중요성이 더 강조된다면 자격증의 가치도 올라가겠죠?


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo