2016년 3월 30일 수요일

소프트웨어 개발자가 읽어 볼 만한 40개 블로그

출처:  Security Innovation Europe


  1. Code Simplicity
  2. Joel on Software
  3. Scott Berkun
  4. Coding Horror
  5. Scott Hanselman
  6. /\ndy
  7. Paul Graham’s Essays
  8. Federico Cargnelutti
  9. DailyJS
  10. David Walsh
  11. Pontikis
  12. Six Revisions
  13. Web Appers
  14. Ajaxian
  15. ProgrammableWeb
  16. Martin Fowler
  17. Eric Sink
  18. The Daily WTF
  19. UIE Brainsparks
  20. PragDave
  21. Silk and Spinach
  22. YTechie
  23. Bit-Player
  24. Exploration Through Example
  25. Clarke Ching Rolls Rocks
  26. Jonathan Kohl
  27. Word Aligned
  28. Technology, Strategy, People & Projects
  29. David Chelimsky
  30. Ruminations of a Programmer
  31. Herding Cats
  32. My Secret Life as a Spaghetti Coder
  33. Software by Rob
  34. Implementing Scrum
  35. Succeeding with Agile 
  36. Regular Geek
  37. Good Coders Code, Great Reuse
  38. secretGeek
  39. Otaku, Cedric’s Blog
  40. A Geek with a Hat

소프트웨어 정의 WAN(Software-Defined WAN) 시장의 성장

IDC에 따르면, 소프트웨어 정의 네트워킹(Software-Defined Networking)은 기업이 클라우드 전략를 최적화 하려는 노력에 맞춰서 크게 성장할 것으로 예측된다. SDN은 데이터센터에 활발하게 적용되고 있고 네트워크에 민첩성(agility)과 대응성(responsiveness)을 기대만큼 제공하고 있다. 또한, 클라우드 애플리케이션과 서비스 요구사항을 최적화할 수 있도록 광대역 네트워크(WAN)로 중심이 이동하고 있다. 

IDC의 연구조사에 따르면, 전세계 소프트웨어정의 WAN (SD-WAN) 시장은 연평균(CAGR) 90% 이상 성장세를 보이며 2020년 60억달러 규모에 달할 것으로 예상된다. 

SD-WAN의 등장은 최근의 형성된 시장으로 이전에는 Hybrid WAN 아키텍처가 존재했다. SD-WAN을 도입하면 비즈니스 어플리케이션을 비용  효과 높게 제공할 수 있고, 원격 사이트에서 발생하는 다양한 운영 요구사항을 해결할 수 있고, SaaS(software-as-a-service)나 클라우드 기반 서비스를 최적화 시키며, 자동화를 통해 연결된 소단위 IT의 효율성을 향상시킬 수 있다.


시스템 라이프사이클에 따른 소프트웨어 아키텍트의 3가지 역할

John Klein (Architecture Practices Initiative)

"아키텍처는 구조들의 결합체로서 시스템을 설명하는 논리를 제공한다. 각 구조는 구성요소, 요소들간의 관계, 그리고 요소와 관계의 특성으로 구성된다."


그리고, 아키텍처 전문가는 3가지 역할을 수행할 수 있어야 한다.

1. 초기 디자이너(Initial Designer)
시스템 디자인을 시작할 때, 아키텍트는 구조적으로 중요한 기능과 품질 요구사항을 정의해야 한다. 그리고, 요구사항을 활용해서 개념적으로 통합된 개요도를 디자인한다. 시스템 디자인에서 가장 중요한 것은 개념 통합이 내부 일관성, 즉 구축과 운영에서 동일한 결과가 동일한 방법에 의해서 만들어지는 로직을 제공해야 한다는 것이다. 이 역할은 소프트웨어 개발 프로젝트의 초기 단계에서 매우 중요하다. 특히, 여러 팀을 도와 효과적으로 협업을 이끌어내야 할 경우 더욱 중요하다.


2. 확장자(Extender)
최초 출시 후에는 일반적으로 빠르게 가치를 부가하려는 압력이 있기 마련이다. 예를 들어, 상업 제품의 초기 출시는 중요한 선행투자에 의해 이루어지며, 시스템 확장 단계에서 그 투자 자금을 빨리 회수하려는 경향이 있다. Facebook, Dropbox, PayPal 처럼 상업용 시스템의 대부분은 다른 시스템과 통합하여 상대적으로 적은 개발 비용을 들이고도 큰 자금회수에 성공할 수 있었다. 마찬가지로, 기업의 IT 환경에서 새로운 시스템을 다른 기업 시스템들과 통합하는 것은 자동화를 향상시키고 가치를 빠르게 높인다.

따라서, 소프트웨어 아키텍트는 구축한 시스템에 대한 이해와 함께 인터페이스에 대해서도 이해하는 것이 중요하다. 그리고, 중요한 미들웨어, API, 커뮤니케이션 프로토콜 등 시스템 통합에 필요한 기술들을 이해하고 있어야 한다.

이런 이해를 통해 아키텍트는 어떤 통합 유형이 쉽고 빠를 수 있는지 정할 수 있다. 그리고 어느 특정 외부 시스템과 통합되는 것이 최선인지도 알 수 있다. 시스템 확장 단계에서 흔히 성공한 개인들은 초기 개발팀의 구성원으로서 그 시스템이 어떻게 만들어졌는지, 명시되지는 않았지만 어떤 기능을 발휘할 수 있는지, 그리고 부작용이 무엇인지 등을 잘 이해하는 사람이다.

3. 지속하게 하는 사람(Sustainer)
시스템이 상당시간 운영되고 나면 이후는 유지보수 비용이 올라가게 된다. 따라서, 관심은 장기유지로 이동하게 되고 가치를 계속 제공하면서 아키텍처나 운영에 거의 변화가 없도록 하는 것이 목표가 된다.

아키텍트 입장에서는, 이런 유지보수 단계에서의 초점은 시스템 가치를 지속하기 위한 분석, 변호, 소통이 된다. 세부 역할에는 최근의 사례와 일치하는 새로운 패턴을 활용하여 시스템에서 그 기술과 유형을 모델링하는 것도 포함된다. 

따라서, 이 단계에서는 이해관계자들(의사결정권자 포함)에게  시스템의 지속적인 적합성과 새로운 환경에서 가치를 어떻게 부여할 것인지를 설명할 수 있는 문서를 작성하는 스킬이 요귀된다.