본문 바로가기

분류 전체보기114

Spark - RDDs Resilient Distributed Datasets 즉, RDD는 변경할 수 없는(immutable) elements 집합이다. 간단히 RDD의 특징을 살펴보면- Partitioning- Persistence- Fault Tolerance- Lazy Evalution- ...이 밖에도 많이 있지만, 자세한 것은 처음 접할 때 어려울 수 있으니 차근차근 알아보도록 하겠다.다만, 이와 같은 특징들은 Spark가 데이터를 효과적으로 처리할 수 있도록 한다.*RDD의 원천부터 알고 싶다면, "https://www.usenix.org/system/files/conference/nsdi12/nsdi12-final138.pdf" 관련 Paper를 읽어보는 것을 추천한다. 위에서 언급했듯이, RDD는 여러가지 데이.. 2020. 1. 24.
SOLID Principle SRP (Single Responsibility Principle)단일 책임 원칙은 쉽게 접할 수 있는 원칙이다.그렇지만 반대로 쉽게 접할 수 있다고 해서 쉽게 적용 할 수 있는 부분도 아니다. 그 이유는 바로 "책임" 이라는 의미가 엄청 모호하다는 것이다. 상황, 시점 등등에 따라 사람이든 다른 무엇이든 해야하는 것이 다르기 때문이다.그렇다면 소프트웨어 설계 관점에서 책임은 무엇일까. 고민해보면 역시 소프트웨어 요구사항을 생각할 수 밖에 없는 것 같다.즉, 소프트웨어 자체가 요구 사항에 기반하여 객체, 메소드가 만들어 지기 때문에 시나리오를 책정하고 그에 따라 구분되는 각 구성 요소의 역할들이 "책임" 이지 않나 싶다. 하지만 SRP의 더 큰 문제라 할 수 있는 지점은 나름대로 책임을 구분하여 분리하였.. 2019. 11. 17.
Software Requirement - Part 2 Functional Requirement Vs Non-Functional Requirement Functional Requirement소프트웨어는 동작을 위해서는 Input, Behavior, Output와 같은 3가지 구성이 필수적이다. (코드를 작성할 때 항상 Input, Output 그리고 내부 동작한 로직인 Behavior를 생각하는 것처럼) 때문에 "기능적 요구사항" 은 간단히 소프트웨어를 동작시키기 위한 필수 요소를 정의하는 것이다. 간단히 예를 살펴보면,- 고객들이 산 물품에 대해 기록해야 한다.- 배경화면은 RGB 코드의 0x000FF이어야 한다. 등등과 같이 해당 소프트웨어에서 동작시켜야 하는 필수 요구사항이다. Non-Functional Requirement기능적 요구사항과 달리 소프트.. 2019. 10. 27.
Software Requirement - Part 1 Software Requirement에 대해 차근차근이 알아보려고 한다. (공부할겸..) 프로젝트를 시작할 때, 가장 중요한 것은 "무엇을 만드냐" 이다. 물론 토이 프로젝트로서 재미삼아 만들어 볼 순 있지만 그건 개인에 한정된 부분인 것이고 회사로 넘어가게 되면 프로젝트 하나하나가 큰 시간과 비용을 소모하는 일이기에 프로젝트를 명세하고 진행하는 것이 중요하다.때문에 무엇을 만들어야하는지 명세하기 위해 Requirement 즉, 요구 사항을 수집하고 정의하는 것이 필수적이다.위 그림을 보면 프로젝트 요구사항을 피라미드 형태로 구분되어있다. 즉, Top-Down 형태로 아래로 내려갈수록 좀 더 세부적인 요구사항을 정의하게 된다. (잠깐, 위 그림은 Business, User, System 3가지로 구분되어.. 2019. 10. 20.