프로그래밍(Web)/공부일기

    [바미] 트리거는 왜 사용할까?

    회사의 Node프로젝트 중 트리거를 사용하는 프로젝트가 있었습니다. 그 트리거들은 특정 작업 전에 동작하거나 특정 작업 후에 처리되는 것들이였기 때문에 그 트리거들을 보면서 미들웨어라는 좋은 게 있는데 왜 트리거를 사용했을까? 라는 생각을 하게 되었습니다. 그러니까 아래와 같이 구성하면 되지 않나? 싶었죠. app.use(async (req, res, next) => { try { const result = await someAsyncTask(); req.customData = result; // 비동기 작업 결과를 요청 객체에 저장 next(); // 다음 미들웨어 함수 호출 } catch (error) { next(error); // 오류 처리를 위해 다음 미들웨어 함수 호출 } }); 그러다 GPT..

    TypeORM vs Sequelize

    안녕하세요. 자바스크립트 계열의 언어를 사용하다시는 분들이라면 한 번쯤은 접해봤을 ORM 라이브러리라고 생각합니다. 오늘은 이 둘에 대해 간단하게 비교해보도록 하겠습니다. 차이점 TypeORM TypeScript와의 통합 TypeORM은 TypeScript와의 완벽한 통합을 제공하며, 타입 안정성과 코드의 가독성을 높일 수 있습니다. Active Record 및 Data Mapper 패턴 지원 두 가지 패턴을 지원하여 사용자가 선호하는 방식으로 데이터 모델을 다룰 수 있습니다. 데이터베이스 독립성 다양한 데이터베이스를 지원하며, 데이터베이스 간의 전환을 비교적 쉽게 할 수 있습니다. Migrations 및 Schema 관리 쉬운 마이그레이션 관리 도구를 제공하여 데이터베이스 스키마를 관리하기 쉽습니다. ..

    sequelize 사용기?

    Intro혼자서 프론트부터 백엔드까지 북치고 장구쳤던 프로젝트가 있었다. 그 코드 구조가 프론트에서 ajax로 통신 -> ajax route처리하는 부분에서 호출 url에 맞는 API 함수 호출 -> DB 실행 -> 데이터 return 형태로 하나의 파일에서 호출URL에 맞는 함수 호출 부분이 전부 담겨있고, 다른 하나의 파일에선 API 호출하는 함수들을 선언하는 부분들이 담당하는 구조였는데 이 부분을 개선하여 조금 더 REST API 형태에 비슷하게 하도록 sequelize를 사용하여 구조를 변경해 보았다. 각 호출에 필요한 Model을 만들었고, API 호출 구조와 동일하게 디렉토리 안에 index파일을 만들어 API 개발할 때 직관적으로 개발 할 수 있도록 만들어보았다.어떻게 사용했는가?예를 들어 ..

    Node - koa 프레임워크를 사용하며 느낀점

    요번에 koa 프레임워크로 개발하게 되어 koa 프레임워크에서 REST API를 처리하는 간단한 코드를 만들어 보았습니다. 예제 코드 const Koa = require('koa'); const Router = require('@koa/router'); const app = new Koa(); const router = new Router(); var userList = []; router.get('/', (ctx) => { ctx.body = 'Hello World!'; }); router.post('/users', (ctx) => { const name = ctx.query.name; if (checkDuplicates(userList, name)) { ctx.body = 'User duplicate..

    [바미] 백엔드 개발자로 이직하며 접했던 면접 질문들

    안녕하세요. 3년차 백엔드 포지션 개발자로 이직하며 접했던 면접 질문들을 공유합니다. 저는 Node.js, Go를 사용하는 회사를 주로 지원했기 때문에 Spring개발과 관련된 질문은 없다는 점 양해 바랍니다. 많은 도움이 되셨길 바랍니다. 백엔드 관련 더보기 REST API에 대해 설명해주시고, REST API의 장, 단점을 말씀해주세요 [바미] REST API에 대하여 안녕하세요. 오늘은 REST API에 대해 알아보고자 합니다. REST? 흔히 개발을 하셨던 분들이라면 'REST하다.' 라는 표현을 접해보셨을 겁니다. 개발하면서 흔히 접했지만 정확히 얘기하지 못하는 부분 codesk.tistory.com REST API의 메소드들을 아시는대로 말씀해주세요. [바미] REST API에 대하여 안녕하세..

    [바미] 실전 아파치 카프카 - 카프카의 구성요소

    카프카의 구성요소 프로듀서 : 데이터 생산자이며 브로커에 메시지를 보내는 애플리케이션 메시지 : 카프카에서 데이터를 다루는 최소 단위 브로커 : 데이터 수신 및 전달하는 서비스 컨슈머 : 브로커에게 메시지를 전달받는 애플리케이션 토픽 : 메시지를 종류별로 관리하는 스토리지. 브로커에 배치되어 관리된다. 프로듀서와 컨슈머는 특정 토픽을 지정하여 메시지를 송수신한다. 프로듀서 -> 브로커 -> 컨슈머의 흐름에서, 프로듀서 -> 브로커는 PUSH형 / 브로커 -> 컨슈머는 PULL형으로 이루어집니다. PULL형의 장점은 컨슈머 고장 시 브로커에 미치는 영향이 적으며, 컨슈머의 증감에 효율적으로 대응할 수 있게 되죠. 카프카의 브로커에서 분산 처리를 위한 관리 도구로 주키퍼가 필요합니다. 주키퍼는 카프카에서 분..

    쿠버네티스와 컨테이너, 도커에 대해 알아보기.

    들어가기전에 요즘 IT 생태계에 도커와 쿠버네티스라는 것을 사용하는 회사가 많아졌다. 도커, 쿠버네티스를 접하지 않은 나에게는 둘 다 생소한 단어들이였다. 최근에 우리 회사에서 도커에 대해 관심을 보이기 시작하여 도커를 사용하려는 움직임을 보이기 시작했고, 도커와 쿠버네티스에 대해 용어적으로 공부한 것들을 기록해본다. 용어 정리 용어 뜻 컨테이너 앱이 구동되는 환경까지 감싸서 실행할 수 있도록 하는 격리 기술 컨테이너 런타임 컨테이너를 다루는 도구 도커 컨테이너를 다루는 도구 중 유명한 것 쿠버네티스 컨테이너 런타임을 통해 컨테이너를 오케스트레이션 하는 도구 오케스트레이션 여러 서버에 걸친 컨테이너 및 사용하는 환경 설정을 관리하는 행위 컨테이너부터 살펴보면 내가 구동하려는 애플리케이션을 실행할 수 있는..

    [바미] 3년차 개발자의 회고

    들어가기전에.. 한 회사에서 신입으로 입사한 지 엊그제 같은데 벌써 만으로 3년이라는 시간이 지났다. 백엔드 개발자를 지원하여 입사하게 되었지만 처음엔 프론트엔드 개발부터 시작하여, 현재는 백엔드 개발을 하고 있다. 3년이라는 시간이 지나며 여러개의 큼지막한 프로젝트를 진행하였고, 블로그를 관리하며 개발 관련 된 부분들을 공부했던 것들을 정리하였지만 지금까지 있었던 일들을 되짚어 보아야 할 필요성을 느끼게 되어 지금 내가 잘했던 점, 아쉬웠던 점을 적어보려한다. 좋았던 점 여기에선 내가 지금까지 시간을 보내면서 잘했던 점, 좋았던 점을 써보려한다. 다양한 프로젝트 경험 지금까지 Node.js, Typescript, Javascript, Java, Go를 사용하여 프로젝트를 진행했던 경험이 있다. Node..

    [바미] 클린 코드를 읽고..

    들어가기전에.. 읽은 지 꽤 된 책이지만 내용이 너무 좋아 다시 리마인드 할 겸 의미 있었던 내용들을 적어두려고 합니다. 그렇기 때문에 에서는 책의 모든 내용을 다루지 않습니다. 깨끗한 코드 이 책의 1장에서는 '깨끗한 코드'에 대해 각자 생각했던 내용을 다뤘다. 책을 읽으며 공감이 됐던 부분을 종합해서 내가 생각하는 깨끗한 코드는 아래와 같다. 제 3자가 읽기 쉽고 고치기 쉬운 코드 한 가지에 집중하는 코드 테스트 케이스가 있는 코드 특히 여기에서 가장 중요하게 생각하는 부분은 제 3자가 읽기 쉽고 고치기 쉬운 코드라고 생각하는데, 코드라는 게 결국 한 사람에 귀속된다기보다는 다른 사람이 코드를 이어받아 유지 보수하는 경우가 더 많기 때문에 제 3자가 읽기 쉽고 고치기 쉬운 코드가 가장 중요하다고 생각..