전체 글(52)
-
레거시 코드에 대한 고민
현재 개발 중인 웹애플리케이션은 프론트와 백엔드 소스가 분리되어 있다. 프론트는 Vue.js로 개발되어 있고, 백엔드는 스프링부트 기반의 자바로 되어 있다. 기존 개발인력이 모두 퇴사하고 내가 입사하게 된 경우라서, 개발인력이 나 혼자이다 보니 서버관리부터 프론트와 백엔드 개발을 혼자 작업해야 했는데, 업무량은 논외로 치고 기존 백엔드 소스를 확인해보니 큰 문제점들이 있었다. 그 중에 몇 가지를 적어보자면, 😒 Controller에 모든 비즈니스 로직 구현 다른 모든 문제점 중에서 이 부분이 제일 짜증나는 부분이었다. 컨트롤러단에 비즈니스 로직이 구현돼 있다보니, 중복된 코드가 여기저기 산재되어 있어서 기존 기능을 수정하려면 여기저기를 다 뜯어 고쳐야 하는 문제가 있었다. 서비스 클래스는 데이터를 처리하..
2021.06.26 -
[NODE 강의] module.exports
[클립명] 1. module.exports 2. Event loop 자료구조 3. Event loop 실습 모듈(module)이란? node.js에서 모듈이란 다양한 기능들이 코드화되어 모여 있는 하나의 파일을 의미한다. 서비스가 대형화될수록 관련 기능을 하나의 파일로 모으고 모듈화시키는 것이 중요해진다. 여러 가지 기능을 하나의 파일에 전부 구현하다보면 유지보수 및 버그 수정이 어려워지기 때문에 시간이 지날수록 감당하기 힘든 문제가 발생하기 때문이다. 이런 모듈들이 모이고 모여서 프로그램을 이루기 때문에 내가 코딩하고 있는 소스로 외부 모듈의 기능을 불러와서 사용하는 일이 중요하며 가장 기초가 되는 것이다. node.js에서는 다른 모듈을 사용할 때는 require, 모듈을 해당 스코프 밖으로 보낼 때..
2021.05.02 -
[NODE 강의] Semantic Versioning (제품 버전 관리)
[클립명] 1. Semantinc Versioning 2. npx 3. nodemon 오늘은 Node.js 강의 중에서 Semantic versioning에 대한 강의 클립을 시청하였다. 이 부분은 현업에서도 많은 관계가 있는 부분이라서 엄청 좋았다. npm을 이용하여 패키지를 설치하고, pacakage.json을 열어보면 위와 같이 패키지명과 세자리 단위로 된 숫자들을 볼 수 있는데, 이것이 바로 해당 패키지의 버전을 의미한다. 자 그럼 이 버전은 각 자리별로 어떤 의미가 있고, 어떻게 관리되는 것일까? Semantic versioning 직역하자면, '의미있는 버전관리' 정도가 될 것 같다. 자사 솔루션이나 서비스가 업그레이드 or 버그 패치 등이 이루어지면서 버전 관리가 필요하게 되는데, 이 버전관..
2021.05.02 -
[NODE 강의] I/O, Non-blocking, REPL
※ 해당 포스팅은 패스트캠퍼스의 [Node 웹 프로그래밍 올인원 패키지 Online] 수강후기입니다. [클립명] 1. IO와 프로그래밍 패러다임 2. Node vs browser 3. Node.js REPL I/O 웹애플리케이션에서 가장 많은 부분을 차지하는 것은 결국 네트워크 트래픽을 통한 Input/Output 이다. 사용자들의 입력(Input)에 대해 결과값을 출력(Output)하는 것이 핵심인데, 아파치나 톰캣 같은 기존의 WAS들은 사용자의 요청을 처리하기 전까지 다음 작업으로 넘어가지 못하는 문제가 있어서 성능적인 이슈가 있었다. 점점 복잡한 데이터가 많아지고 사용자가 많아지는 환경에서, 결국 수많은 입력(input)에 대해 얼마나 빠르고 정확하게 출력(output)을 할 수 있는가가 웹서버 ..
2021.04.25 -
[NODE 강의] Socket.io를 이용한 간단한 실시간 채팅
※ 해당 포스팅은 패스트캠퍼스의 [Node 웹 프로그래밍 올인원 패키지 Online] 수강후기입니다. [클립명] 1. 채팅구현하기 1 2. 채팅구현하기 2 3. 서버 확장 고려하기 이번에는 패캠 강의 중에서 Node.js를 이용하여 실시간 채팅 프로그램을 구현하는 강의를 보면서 공부해보았다. 실시간 채팅은 Socket.io를 이용하여 구현하는데, 일단 Socket.io가 뭔지부터 알아보자. Socket.io Socket.io는 기존의 클라이언트의 요청에 의해 서버의 응답을 돌려받는 단방향 통신을 벗어나 실시간으로 양방향 메시지 송수신을 위해 만들어진 WebSocket을 Node.js에서 쉽게 사용할 수 있도록 해주는 모듈이다. 웹소켓이 가진 단점 중의 하나인 웹브라우저 호환성 문제도 해결할 수 있다. 일..
2021.04.24 -
[NODE 강의] MongoDB
[클립명] 1. MongoDB 2. MongoDB CLI 3. Mongoose CRUD 이번에는 패스트캠퍼스 node.js 강의 중에서 MongoDB 관련 클립을 시청하였다. 몇 년 전부터 빅데이터, 몽고DB 얘기는 계속 들어왔었는데 실제로 몽고DB에 대해서 알아보는 건 처음이었다. 따라서, MongoDB에 대해서 간단하게 정리해보려고 한다. NoSQL NoSQL(원래 의미: non SQL 또는 non relational) 데이터베이스는 전통적인 관계형 데이터베이스 보다 덜 제한적인 일관성 모델을 이용하는 데이터의 저장 및 검색을 위한 매커니즘을 제공한다. 이러한 접근에 대한 동기에는 디자인의 단순화, 수평적 확장성, 세세한 통제를 포함한다. NoSQL 데이터베이스는 단순 검색 및 추가 작업을 위한 매우..
2021.04.14