NoSQL은 전통적인 관계형 DBMS을 문제점을 극복하기 위해서 나온 개념으로 빅데이터에 특화된 DB라고 이해를 하면 쉽다. 관계형 DBMS의 무거운 처리와 다양한 기능들을 제거하고 심플한 매커니즘을 장착하여 범용적인 서비스보다는 특별한 목적이 있는 DB라고 생각하면 된다. 일관성 모델의 Not only SQL, NoSQL의 개요 가. NoSQL의 개념- 데이터베이스는 전통적인 관계형 데이터베이스 보다 덜 제한적인 일관성 모델을 이용하는 데이터의 저장 및 검색을 위한 매커니즘을 제공하는 DB (wikipedia)- Not only SQL, 즉 SQL만을 사용하지 않는 데이터베이스 관리 시스템 데이터를 저장하는 방법에는 여러가지가 있으며, NoSQL은 SQL만을 사용하여 저장하지 않는다는 의미를 담고 있다..
AOP(관점지향프로그래밍, Aspect Oriented Programming)는 스프링 프레임워크(Spring Framework)을 써야만 되는 이유중 하나로, 대규모 프로그래밍을 매우 강력하게 만들어 줍니다. 관점지향 프로그램을 이해하기에 앞서 우리는 OOP(객체지향 프로그래밍, Object Oriented Programming)에 대해서 먼저 선 이해를 해야 합니다. 프로그램은 소프트웨어 위기를 겪게 되면서, 패러다임이 유지보수를 편하게 할 수 있는 쪽으로 전환을 시작하게 됩니다. 그러면서 객체지향 프로그램이 나오게 됩니다. 즉 소스가 소스끼리 얽히고 설키는 것이 아니라 소스 하나하나를 재활용할 수 있게 만들어서 조립하는 방식으로 만드는 것이죠. 대표적인 언어가 자바(Java) 입니다. 하지만 일반적..
린 개발 방법론은 토요타 생산 시스템(Toyota Production System)에서 사용한 기법을 Mary and Tom Poppendieck 부부가 2003년에 재정립한 기법이다. 즉 생산 시스템에서 영감을 얻어 프로그램 개발 방법론에 적용한 기법인데 IT 프로젝트 뿐만 아니라 다양한 분야에서 사용할 수 있는 기법이다. 린 방법론은 무다(無駄)라는 "낭비"에 포커스를 두고 프로젝트를 수행할 때 발생할 수 있는 모든 낭비를 제거하는 기법이다. 예전에 TPS에 관련된 교육 이수를 받은 적이 있었는데 동료에게 물건을 전달할 때에도 낭비 요소가 없는지 전화 통화를 할 때 낭비요소가 없는지 모두 체크하는 것이 인상적이었다. 낭비요소 제거를 통한 프로세스 향상, 린 개발방법론 의 개요 린(Lean) 개발 방법..
XP는 스크럼(Scrum)과 쌍두마차격인 애자일(Agile) 방법론이다. 비즈니스 상의 요구가 시시각각 변동이 워낙 심하다보니 기존의 개발방법론으로는 현재의 흐름을 제대로 대응하기 힘들었고, 그래서 나온 것이 XP 방법론이다. XP는 켄트 백이 1999년에 "Extreme Programming Explained - Embrace Change" 라는 저서로 발표하였고 이후 XP라는 약칭으로 알려지게 된다. XP는 구체적인 실천 방법들을 정리해 놨고, 이 방법론은 적은 규모의 개발 프로젝트에 적용하기 좋다. 기존의 일반적인 산출물보다 소스코드를 조직적인 행동보다는 개개인의 행동과 책임 등을 중점을 둔다. 초창기에는 4가지의 가치를 추구했던 것으로 사료된다. "What Is Xp" 문서를 보면 단순성, 소통,..
내 머리속에서 애자일(Agile)하면 제일 먼저 떠오르는 것은 바로 스크럼(Scrum)이다. 요즘에는 관심이 좀 식었지만 한 때 폭발적인 관심으로 애자일 = 스크럼이 될 정도였었다. 대기업에서는 특히 스크럼을 실행하는 곳이 많았는데 사이트를 가면 스크럼 기반으로 만들어진 팀부터 프로젝트 관리까지 스크럼 투성이었다. 몇년전 당시 다니던 회사의 본부장님은 SW 품질쪽으로는 유명하신 분이라서, 애자일과 스크럼, 칸반에 관련된 문서를 잔뜩 뽑아서 나눠졌던 기억도 있다. 그만큼 SW 품질이나 관리를 하는 사람들에게는 도저히 못들어본 말일 것이다. 우선 스크럼의 탄생은 일본 히토츠바시 대학의 노나카 이쿠지로와 타케우지 히로타카가 1986년 1~2월 Harvard Business Review에 올린 "The New ..
데이터 독립성(Data Independence) 가. 데이터 독립성의 개념 - 하위 단계의 데이터 구조가 변경되더라도 상위 단계에 영향을 미치지 않는 속성- 데이터베이스 구조의 변화로 인한 영향을 프로그램에 미치지 않도록 하는 것- 데이터 표현 방법이나 저장 위치가 변하더라도 응용 프로그램에는 아무런 영향을 미치지 않는 성질- DBMS의 궁극적인 목적으로 응용프로그램이 데이터에 종속되지 않는 것을 의미한다.- 미국 표준 협회(ANSI) 산하의 X3 위원회(컴퓨터 및 정보 처리)의 특별 연구 분과 위원회에서 1973년 DBMS와 인터페이스를 위해 제안한 Three-Schema Architecture 나. 데이터 독립성의 필요성 각 View의 독립성 유지, 계층별 View에 영향을 주지 않고 변경 유지보수 ..
바야흐로, 이제 4G LTE-A(Long Term Evolution Advanced) 시대가 지나가고, 5G 시대를 눈앞에 두고 있다. 3G때와 다르게 4G LTE를 쓰면서, 거의 불편함을 겪지 못했을 것이다. 휴대폰으로 대용량의 데이터를 빨리 받을 필요도 없고, 유튜브같은 경우 고화질의 영상을 재생하는데 끊김없이 잘만 보고 있는 입장에서 5G가 필요할 지 많은 분들이 의문점을 가질지 모르겠다. 5G는 단순히 속도가 빠른 것을 넘어선다. 우리가 4차 산업혁명으로 가는 이 상황에서 5G는 인프라의 시작점이라 할 수 있다. IoT(Internet of Things)의 열풍을 기억하는가? IoT 시대가 오면 우리가 하는 모든 것들이 기록이 되며, 기계들간의 통신이 되고 그걸로 인해서 인간의 삶은 풍요로워질 수..
기업 비즈니스 서비스의 IT 의존도가 커지면서 IT 서비스는 단순한 IT 자원 관리의 차원을 초월하여 기업의 비즈니스 차원에서 관리되어야 합니다. 또한, 이러한 ITSM(IT Service Management, IT 서비스 관리)은 ITIL(IT Infrastructure Library)을 기반으로 하는 Best Practice(모범사례)를 참조하여 설계되고, 그 유효성이 검증 되어야 한다. 이러한 ITSM을 검증할 수 있는 효과적인 도구로 ISO 20000 인증이 있다. 1. IT 서비스 프로세스 관리 국제 표준, ISO 20000의 개요 가. ISO 20000의 개념 - ITIL을 기반으로 ITSM의 운영 및 관리 체계를 측정, 평가, 개선하기 위하여 제정한 국제 심사/인증 표준 나. ISO 2000..
객체지향에서 꼭 지켜야 할 원칙이 총 5가지 있는데 이걸 OOP 5대 원칙이라고 한다. 물론 이걸 머리속에 집중하며 5대원칙 중 하나는 뭐... 또 하나는 뭐... 이렇게 외우면서 설계 및 코딩하는 사람들은 없기 때문에 한두번 정도 이해하고, 나머지는 경험에서 우러나오는 개발을 하게 된다. OOP 5대 원칙을 줄여서 SOLID라고도 부른다(앞글자들 모음) 1. OOP 설계의 5대 원칙의 개요 가. OOP 설계의 5대 원칙의 개념 - 객체지향 소프트웨어 설계 도구들의 근본이자 목적이 되는 원칙 나. 객체지향 설계의 필요성품질 향상 : 재사용성, 유지보수 등을 통한 생산 및 품질의 향상모형의 적합성 : 현실 세계에서의 인간 사고와 유사일관성 유지 : 공정 단계간의 전환과 변경이 자연스럽고 신속함 2. OOP..
MDA는 OMG(Object Management Group, 객체 관리 그룹)가 그동안의 시행착오 끝에 만들어낸 독립적인 소프트웨어 자동화 기술이다. 한마디로 코드를 자동으로 찍어낼 수 있게 하기 위한 기술이라는 것인데 이러한 기술을 위해서는 모델을 종속적으로 설계하지 않고, 객관적으로 설계 한 후 플랫폼에 맞춰서 모델에 따른 코드를 생산한다. 환경이 Java라면, 자바코드를 생산하고, 환경이 C++이라면 C++의 코드를 생산한다고 이해를 하면 된다. MDA는 현재 금융같이 대규모로 코드를 생산해야 되는 곳에서 사용하고 있으며, 사실 MDA까지는 아니지만 전자정부 프레임워크같은 경우 개발자의 개발 기간을 확 낮추는 코드를 생성해주는 컴포넌트 기반의 코드 생성도 있다. 미래에는 개발자도 먹고 살기 힘든 시..
단계적 프로세스 모형을 구체적으로 구현한 클린룸 모델은 IBM사에서 만든 모델이다. 시스템의 핵심이 되는 부분을 최초의 프로토타입 모형으로 개발을 하고, 계속 증대해 나가는 나선형 모델 혹은 진화형 모델과 유사한 모델로 볼 수 있다. 클린룸은 오염 제어가 행해지고 있는 한정된 공간으로 공기 속에 포함되어 있는 먼지 뿐 아니라 온도, 습도, 실내 공기압, 가스성분, 정전기, 미진동, 전자파 등 환경조건이 제어되는 실을 의미 하는데 이와같이 철저한 혹은 완전 무결한 공정을 통해서 SW를 개발한다는 의미라고 받아 들이면 될 것이다. cleanroom의 모습1. 완전 무결한 소프트웨어 개발지향, 클린룸 모델 가. 클린룸 모델(Clean Room) 모델의 개념- 수학적(정형명세/검증), 통계적(테스트) 이론에 기..
칸반 방법론은 스크럼과 같이 국내 애자일 방법론계에서 상당히 핫한 방법론이다. 칸반이라는 용어는 간판의 일본어지만, 도요타 생산 시스템(TPS)에 있는 칸반이라는 카드에서 사용한 것을 의미한다. 즉 한자는 같더라도 내용은 다르다는 것... 사실 애자일이 다 그렇듯 별거 없다. 용기와 자신감과 잦은 소통과 짧은 회의 등등 이런것들이 애자일의 핵심인데 칸반도 그 방법론에 크게 벗어나지 않는다 다만 개발자들이 작업을 하는 것을 "간판(카드)"에 적어(혹은 포스트잇)서 시각화를 하는 것이 핵심이다. 우리가 말로서 누군가를 관리하고, 혹은 WBS를 열심히 작성하더라도 업무를 정확하게 파악하기란 힘이 든다(팀원이 많아지면 정말 골치 아프다) 칸반 기법은 이 관리를 상당히 단순화 시켜주고, 입체적으로 알수 있게 해준..