본문 바로가기

개발

(24)
[개발상식] 23. DevOps란 무엇이며, CI는 무엇인가? DevOps에 대해서,하나의 소프트웨어를 개발하기 위해서는 여러 명이 동시에 개발할 수 있는 환경도 필요하며, 수천명의 사용자를 상대로 내놓으려면 서버와 스토리지, 운영체제 등 뒷단에서 관리해줘야 하는 인프라 환경도 갖춰야 한다. 이러한 역할을 수행하는 것이 Ops의 역할이다. 개발자(Dev)는 고객에게 제공한 변경을 빠르게 보길 원하고 운영자(Ops)는 제공하는 서비스 또는 소프트웨어의 안정성에 더 관심을 두게 된다. 또한 개발자는 개발 생산성을 향상시킬 수 있는 새로운 프레임워크를 도입하고 싶어하지만 Ops는 안정성이 보장되지 않는다는 이유로 이를 꺼려한다. 서로 다른 목적을 갖고 다른 프로세스로 다른 도구를 사용하여 개발을 진행하는 것이다. 이런 차이점 때문에 Dev와 Ops간에 충돌이 발생한다. ..
[개발상식] 22. 테스트 주도 개발에 대하여 - TDD와 BDD 그리고 DDD TDD Test-Driven Development(TDD)는 매우 짧은 개발 서클의 반복에 의존하는 소프트웨어 개발 프로세스이다. 우선 개발자는 요구되는 새로운 기능에 대한 자동화된 테스트케이스를 작성하고 해당 케스트를 통과하는 가장 짧고 가독성이 좋고 유지보수성이 뛰어난 코드를 작성한다. 일단 테스트 통과하는 코드를 작성하고 상황에 맞게 리팩토링하는 과정을 거치는 것이다. 말 그대로 테스트가 코드 작성을 주도하는 개발방식인 것이다. Add a test 테스트 주도형 개발에선, 새로운 기능을 추가하기 전 테스트를 먼저 작성한다. 테스트를 작성하기 위해서, 개발자는 해당 기능의 요구사항과 명세를 분명히 이해하고 있어야 한다. 이는 사용자 케이스와 사용자 스토리 등으로 이해할 수 있으며, 이는 개발자가 코드..
개발 입문자를 위한 짤막한 안내서 - Hello Coding World 이 글은 Coding의 C자도 모르는 분들을 위한 안내서입니다. 독자적으로 작성한게 아닌, 여러 선배 개발자분들의 글들을 읽어가면서 현재 상황에 맞게 ‘새로고침’도 하고, 제 개인적인 의견도 붙이면서 작성했습니다. 최대한 비 개발적인 언어를 사용하기 위해 노력했으며, 소프트웨어 개발에 대해 조금이라도 알아가게 되는 글이 되었으면 합니다. 0. Intro 1. 어떤 분야가 존재하는가 2. 무엇을 공부해야 하는가 3. 어떻게 공부해야 하는가 #0. Intro 막연하게 '난 소프트웨어 개발을 해야지' 하고 시작하는 사람은 없을 것이라고 생각한다. 스마트폰 보급이 대중화되면서 자주 사용하는 모바일 앱을 보고, 앱을 만들고 싶어져서 개발을 하고 싶을 수도 있고, 나만의 웹 사이트를 만들고 싶거나 커뮤니티를 기반으..
[개발상식] 23. 프로비저닝 프로비저닝 ( Provisioning ) 무엇인가 여럿 중에 최적인 것을 찾기 위해 필요한 지식을 미리 준비해놓고 요청에 맞게 공급하는 절차와 행위를 말한다. 즉, 미리 정의된 정책이나 서비스를 사용자에게 지원해주는 것을 말한다. IT 인프라 자원을 사용자 또는 비즈니스의 요구사항에 맞게 할당, 배치, 배포해서 시스템을 사용할 수 있도록 만들어 놓는 것이다. 프로비저닝에는 약 다섯 가지의 종류가 존재한다. 서버 자원 프로비저닝 서버의 CPU, Memory 등의 자원을 할당 또는 적절하게 배치해서 운영할 수 있도록 준비해 놓는 것을 서버 자원 프로비저닝이라 한다. OS 프로비저닝 OS를 서버에 설치하고, 구성 작업을 해서 OS가 기동되도록 준비해 놓는 것을 OS 프로비저닝이라 한다. 소프트웨어 프로비저닝 ..
개발자가 보는 뉴미디어 시대 - 언론이 이제부터라도 개발에 돈을 투자해야 하는 이유 / (신)기술 스택에 대하여 종이 신문이 점점 사라진다. 뭐 이젠 아무렇지도 않다. 이미 많은 것들이 사라졌고, 지금 이 순간에도 무엇인가가 사라지고 있기 때문이다. Intro.종이 신문을 구독하는 계층은 기성세대에 불과하고, 앞으로 사회를 이끌어갈 20~30대는 더이상 종이를 통해 신문을 구독하지 않는다. 사실 인터넷 신문조차도 거의 보지 않는다. 이 글에서 정치에 관심이 없는 20~30대에 대한 원론적인 얘기는 잠시 접어두자. 그나마 정치에, 언론에 관심이 있는 20~30대를 대상으로 이야기를 진행해보자. 이들이 얼리어답터가 되어 나머지 사람들을 끌어모을지는 아무도 모르는 것이다! 언론이 20~30대에게 접근하기 위해서는 어떻게 해야할까타겟층을 정했으면 그 타겟층을 분석해봐야 한다. 하지만 이 부분도 정말 일반적인 상황에 대해 ..
Common JS, AMD Common JS 의존성 관리 문제에는 단지 어떤 의존성 관리 시스템을 이용할 수 있느냐의 문제 뿐만 아니라 성능 문제도 끼어있다. 브라우저는 모든 자바스크립트 파일을 HTTP 요청을 보내야 하는 것이다. 각 연결을 이용하려면 HTTP 헤더, 쿠키, 다른 TCP 핸드셰이크 시작 등의 오버헤드가 따른다. 애플리케이션이 SSL을 이용한다면 상황은 더 심각해진다 Common JS 모듈을 선언하는 방법은 상당히 직관적이다. 기본적으로 명칭 공간을 이용하며 각 모듈은 인터프리터가 정의한 exports 오브젝트에 변수를 추가하여 외부에 공개할 수 있다 모듈에 명칭 공간을 적용했으므로 Node.js 같은 모든 CommonJs 호환 자바스크립트 인터프리터에서 이 코드를 사용할 수 있는 것이다. AMD AMD는 동적로딩..
서버 사이드 렌더링 그리고 클라이언트 사이드 렌더링 클라이언트 사이드 렌더링 & 서버 사이드 렌더링 "렌더링의 현주소 모바일의 시대가 도래하면서, 모바일 환경에 맞춰진 웹 페이지 즉 모바일 웹에 대한 니즈가 폭발적으로 증가했고 그에 따른 성능 이슈도 함께 거론되었다. 데스크탑에 비해 성능이 낮은 모바일, 스마트폰을 통해 웹 페이지를 출력하기 위해서는 기존에 있었던 방식과는 다른 접근이 필요했고 그에 따라서 Singla Page web Application 기법 (SPA)이 등장하게 되었다. SPA는 브라우저에 로드되고 난 뒤에 페이지 전체를 서버에 요청하는 것이 아니라 최초 한번 페이지 전체를 로딩한 이후 부터는 데이터만 변경하여 사용할 수 있는 웹 애플리케이션을 의미한다. 전통적인 웹 방식( 서버 사이드 렌더링 )은 이 SPA 방식에 비해 성능 문제를 ..
#객체지향적 설계 원칙 - 이론을 통해 알아보는 객체지향 #객체지향적 설계 원칙 SOLID *SRP (Single Responsibility Principle) : 단일 책임 원칙 OCP (Open-Closed Principle) : 개방-폐쇄 원칙 LSP (Liskov Substitution Principle) : 리스코프 치환 원칙 ISP (Interface Segregation Principle) : 인터페이스 분리 원칙 DIP (Dependency Inversion Principle) : 의존 역전 원칙 단일 책임 원칙 클래스는 단 한 개의 책임을 가져야 한다. 클래스를 변경하는 이유는 단 한개이어야 한다. 단일 책임 원칙을 지키지 않았을 때, 한 책임의 구현 변경에 의해 다른 책임과 관련된 코드가 변경될 가능성이 높다. 개방-폐쇄 원칙 확장에는 열려 ..