본문 바로가기

Development Log

(6)
Javascript 변수 할당에 따른 메모리 운영 방식 프로그래밍을 배울 때 가장 먼저 선행되는 학습이 변수 할당이다. 자바스크립트 또한 프로그래밍 언어 중 하나로써 예외가 아닐 수 없다. 자바스크립트는 동적 타이핑(Dynamic Typing)이라는 특징 덕분에 다른 언어에 비해 변수를 선언하는 방법이 굉장히 자유롭고 쉽다. 이렇다 보니 많은 초보 개발자들은 더 이상 깊게 공부하지 않고 넘어가는 게 일반적이다. 오늘은 여기서 놓치고 지나가는 부분, 자바스크립트에서 변수를 할당하면 메모리에 어떻게 저장이 되며, 값을 사용하고자 할 때 메모리에서 어떻게 찾아오는지에 대해 알아보고자 한다. 메모리와 데이터 메모리는 데이터를 저장하기 위한 하드웨어로, 컴퓨터가 명령을 실행하는데 필요한 데이터들이 로드, 저장되는 곳이다. 메모리는 데이터를 저장할 수 있는 메모리 셀(..
처음부터 끝까지, 종단 간 테스트(E2E) 고객이라는 대상이 있는 모든 제품은 출시전에 사전 테스트 과정을 거칩니다. 테스트는 보다 완벽한 상품으로 거듭나기 위함이고 이는 소비자에게 좋은 경험을 선사합니다. 그리고 소프트웨어 또한 타겟이 있는 제품이기에 SDLC에 필수적으로 테스트 단계가 포함됩니다. 소프트웨어의 테스트 방법은 크게 '단위 테스트', '통합 테스트', '인수 테스트'로 총 3단계로 구분되며, 이번 포스팅에서는 통합 테스트중 E2E 테스트를 다뤄보려고 합니다. 종단 간 테스트(End To End Testing) UI 테스트라고도 하며, 사용자의 입장에서 애플리케이션의 workflow를 처음부터 끝까지를 테스트하여 비즈니스 목표에 대한 시나리오 달성 여부를 확인합니다. 종단 간 테스트는 일반적으로 시스템 테스트가 완료된 이후에 진행되..
클라우드 서비스(IaaS, PaaS, SaaS) 클라우드 서비스가 발전하면서 서버를 구축하는 방식이 단순해지고 있습니다. 기존에는 on-premise 또는 IDC를 통해 물리적인 서버를 직접 관리했다면 이제는 브라우저에서 클릭 몇 번으로 구축할 수 있기때문입니다. 더이상 서버를 위한 자리를 마련하거나, 직접 부품을 장착하거나 필요한 소프트웨어를 설치할 필요가 없어졌습니다. 더불어, 합리적인 요금과 높은 안정성이 보장되기 때문에 많은 기업과 개인이 클라우드 서비스를 이용하고 있고, 추세가 이전되고 있습니다. 클라우드 서비스는 크게 IaaS, PaaS, SaaS 범주로 제공되며, IaaS -> PasS -> SaaS 순으로 더 많은 기능들을 제공하고 있습니다. 그리고 각각의 서비스는 '구매'가 아닌 '대여'로 서비스 되기 때문에 종량제 및 구독형 요금제..
헷갈리는 WS와 WAS 우리가 웹 페이지에 접속하면 일어날까요? 브라우저는 해당 웹 페이지를 표현하기 위해 필요한 정적 파일과 데이터를 웹 서버에 요청합니다. 웹 서버는 적절한 HTML, css, image와 같은 정적 파일 또는 데이터를 반환하고 브라우저는 이를 해석하여 페이지를 표현합니다. 즉, 웹 서버는 페이지에 대한 자원을 가지고 있으며 클라이언트의 요청에 따라 적절한 자원을 찾아서 전달해주는 역할을 합니다. 초기의 웹은 이런 간단한 기능으로도 충분했지만, 웹 기술이 진보함에 따라 서버 또한 변화를 꾀했고, 서버 역할을 하면서 응용 프로그램 수준의 기능을 수행할 수 있는 WAS(Web Application Server)가 등장합니다. WS와 WAS의 비교 사실 둘의 차이는 모호합니다. 인터넷상에 떠도는 많은 포스팅에서는..
버전을 의미있게, Semanctic Versioning 개요 대게의 소프트웨어는 개발되어 출시될 때 '버전 정보'를 가지고 출시됩니다. 그리고 우리는 소프트웨어가 지원하는 기능과 내가 사용하고자 하는 환경에서의 호환 여부에 따라 적절한 버전을 선택해서 사용합니다. 일반적인 소프트웨어 사용자라면 눈에 띄는 주 버전을 주의하는 것만으로도 문제가 없지만 개발자 입장에서는 그렇지 않습니다. 현대의 소프트웨어 규모가 커짐에 따라 많은 패키지를 가져다 쓰게되고, 자연스럽게 깊은 의존성 지옥에 빠지기 때문입니다. 이는 패키지 업데이트와 같은 의존성의 작은 변화가 소프트웨어 전체에 영향을 미칠 수 있음을 의미합니다. Gravatars의 창시자이자 GitHub의 공동창업자인 Tom Preston-Werner는 기존의 버전 표기법에 대해 "어떠한 형태로든 정식 명세를 따르지 ..
체계적인 개발을 위한 SDLC SDLC(Systems Development LifeCycle) 소프트웨어를 개발하기 위한 일련의 절차입니다. 소프트웨어를 만들고, 유지하기 위해서는 많은 공정들이 필요한데 이에 대한 전체 과정을 하나의 생명 주기로 정의하여 각 단계 별 공정을 체계화한 모델입니다. '주기'라는 단어에 맞게 프로세스가 한 번으로 끝나지 않고 목표하는 소프트웨어의 품질에 도달 할때까지 순환되는 고리 형태를 가집니다. 등장배경 컴퓨터 기술의 발전에 따라 다양해지는 고객의 요구사항을 만족시키기 위해 소프트웨어는 기존보다 많은 기능이 필요해졌고, 이는 곧 소프트웨어의 대규모화를 야기했습니다. 소프트웨어의 규모가 커짐에 따라 개발의 복잡성과 시간적인 비용도 당연히 상대적으로 늘어났으며, 이를 해결하기 위해 체계적인 개발 프로세스가..