구현해야하는 페이지, 화면 구현은 대부분 끝이났고 이제 백엔드를 개발하기 전 DB를 구성할 시간이다. DB는 앞에서도 몇번 언급했지만, 변경하기 힘들다. 물론 NoSQL을 사용하면 그에따른 장점도 분명히 생긴다. 그러나, NoSQL을 써야하는 이유가 굳이 없다면, 자신의 DB에 관계조건이 필요하다면 반드시 RDBMS를 사용하는것이 좋다는 의견이 명백하다. 구상단계에서 NoSQL을 사용해보기 위해, MongoDB나, PostgerSQL을 사용해보자 했는데 다음 기회에, 명확한 이유가 생각나지 않았기 때문이다. MySQL을 사용해서 DB를 구현하기 전, 단계적으로 진행하려고 한다. 페이지별로, 혹은 기능별로 필요한 요구사항을 정의하여 Atribute와 field를 나누고, 정리 한 후에 ERD 다이어그램을 ..
현재 진행중인 프로젝트는 피그마로 설계를 끝낸 후, 현재 화면구현 단계를 진행중이다. 본 일정은 23-11-07 까지, 애초에 설계대로 페이지 7페이지 정도씩, 10일이라는 기간을 두고 진행했는데 진행하던 도중 생각지 못하게 필요한 팝업페이지나 모달 창 들이 생겨서 23-11-10 까지 기간을 늘렸다. 3일정도 더 늘린 결과, DB를 설계해야 하는 기간과 맞물렸지만, 일단 총 기한은 틀어지지 않게 할 예정이다. 2명이서 하는 프로젝트이다 보니, 의견 조율은 쉽지만 작업도가 크게 진전되질 않는다. 생각보다 개인이 맡아야할 페이지가 많았던 탓에. 오전 오후 가리지 않고 매번 접속해있는 Figma 상태창에 팀원을 보며 나도 진행해보지만 생각보다 일이 크다. React에 대해서 잘 알지못하는 탓도 있지만, 애초..
개발을 하다보면 반드시 RDBMS를 사용하게 된다. 어떤 툴이던, 어떤 프로그램이던 정보를 저장하고 관리해준다는 데이터베이스의 역할은 빼놓을 수 없게된다. 하나하나 수기로 작성하거나, 엑셀이 입력하는 형태들과, 정보의 대조 비교 검증 모두 DB의 힘이 없으면 힘들어지기 때문이다. 우리가 자주 사용하는 Oracle, MySQL, MS-SQL 등을 제외하고도 여러가지 쿼리들이 존재하는데 이번엔 NoSQL 에 대해서 알아보려고 한다. NoSQL의 작동방식 비관계형이라고도 하는 NoSQL은 정해진 데이터 모델이 아닌, 유동적인 데이터 모델을 사용하여 DB를 관리한다. 서비스마다 천차만별적으로 달라지는 애플리케이션의 구조에 따라 데이터의 볼륨, 지연시간 등에 적응하기 최적화 되어있다. 흔히 사용하는 관계형 DB에..
메모리 관리는 소프트웨어, 응용 프로그램이 컴퓨터 메모리에 접근하는 방식을 제어, 조정하는 역할입니다. 이는 소프트웨어 엔지니어링에서 중요한 주제로써 항상 거론되는 이야기입니다. 거의 모든 개발에서 강조되는 사항이므로 반드시 숙지하고 이해해야합니다. 소프트웨어가 컴퓨터를 대상으로 OS에서 실행될 경우, 다음 사항들을 위해서 RAM에 접근합니다. 실행해야 하는 바이트코드를 로드 실행되는 프로그램에서 사용되는 데이터 값, 데이터 구조를 저장 프로그램 실행에 필요한 런타임 시스템을 로드 소프트웨어 프로그램이 메모리를 사용할 경우, 바이트 코드를 로드하는 공간 외에 사용되는 메모리 영역이 두가지 있습니다. 스택 및 힙 메모리 입니다. 스택 / 힙 스택, 힙은 메모리 구조에서 제일 먼저 맞이하는 기초 개념들 중 ..
윗 글에서도 계속 말했던 운영체제의 목적은 사용자, 하드웨어 사이의 UI, 인터페이스를 제공해서 효율적으로 프로그램이 동작하도록 지원하는 시스템이다. 운영체제의 핵심인 부분을 커널이라고 하는데, 이런 커널에 이것저것 ( 라이브러리, 프로그램 등 ) 이 추가된 것을 운영체제라고 부른다. 자원 관리 컴퓨터 시스템 하드웨어 자원을 효율적으로 관리하게 해준다. CPU, Memory, Storage, IO Device 등 하드웨어에 자원을 할당하고, 관리하는 역할을 한다. 사용자 인터페이스 제공 사용자와 컴퓨터 간의 상호작용을 지원하는 사용자 인터페이스를 제공한다. CLI(텍스트 기반 터미널) 과 GUI(그래픽 사용자 환경)을 통해 사용자가 컴퓨터를 조작할 수 있도록 한다. 네트워킹 운영체제는 컴퓨터 네트워크를 ..
OS는 커널, 라이브러리, 응용 프로그램 같은 수많은 요소가 뭉쳐서 이루어졌다면, 리눅스는 그 OS의 핵심인 커널 그 자체입니다만, 보통 리눅스를 지칭할때 이 커널 기반의 운영체제를 이야기합니다. 리눅스는 그 자체로는 전체 운영 체제가 이나리 단순히 하드웨어와 통신하는 핵심 컴포넌트일 뿐입니다. 리눅스란 하드웨어와 소프트웨어 간의 통신을 관리합니다. 리눅스 명령어는 백엔드 개발자라면 필수적으로 터미널을 다루게 됩니다. 평소에는 사용할 일이 거의 없기 떄문에 어색할 수 있습니다. 보통의 웹서버들, 아파치, IIS 또는 NGiNX 같은 서버들은 리눅스 환경에서 사용되기 때문입니다. 이 리눅스는 오랜 기간동안 개발되어 오며 전 세계적으로 많은 개발자들이 사용합니다. 안정적이고 보안문제에 대해 빠른 업데이트가 ..
쇼핑몰의 물건을 등록할 경우, 어떤 데이터 정보들이 필요할까. 당장 Front에 보이는 정보들도 하나하나 세어본다면 상당히 많은 항목들을 차지한다. 검색했을 경우 나오는 태그들도 별개로 입력이 될 수 있고, 비슷한 제품을 홍보하기 위한 코드들이 존재하는 경우도 많다. 네이버쇼핑에 물건을 한번보자 보이는 정보들을 나열해보자면 아래와 같다. 이미지 카테고리 상품이름 상품배송종류 할인율 가격 할인정보 포인트정보 최대구매개수 배송정보 개수 배송정보 해당 정보들이 어떤 테이블을 가지고 어떤 관계를 가지는지는 알 수 없지만, 얼핏 보더라도 단순히 한두가지의 테이블이 아니라는 것은 알 수 있다. DB를 설계한다면 매핑관계도 신경써야하며, 최소한의 데이터를 쓰기위해 중복될 수 있는 정보들은 최대한 추려나가야 한다. 테..
웹 호스팅은 개인, 조직이 자신의 웹사이트를 인터넷에 게시할 수 있게 해주는 서비스다. 단순히 말하면, 웹 사이트의 파일과 데이터가 저장되는 서버 공간을 임대하는 것과 같다. 자신,기업의 웹사이트를 남들에게 서비스하려면 반드시 필요한 과정 중 하나인것이 바로 호스팅입니다. 공유 호스팅 : 이름에서도 알 수 있듯이, 여러 웹 사이트가 하나의 서버를 공유합니다. 비용이 저렴하나 속도가 느릴 수 있습니다. 전용 호스팅 : 웹사이트가 온전한 전용 서버를 가지게 됩니다. 빠르고, 안전하지만 비용이 높습니다. VPS(가상 사설 서버) 호스팅 : 공유 / 전용의 사이쯤에 위치하는 호스팅입니다. 서버는 공유되나 자원은 가상 서버로 나누어 개별로 유지됩니다. 클라우드 호스팅 : 하나의 서버 대신 웹사이트가 여러 연결된 ..