전체보기

    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..

    OpenVPN Options error: --up script fails with './update-resolv-conf': 지정된 파일을 찾을 수 없습니다. (errno=2) 해결방법

    script-security 2 up ./update-resolv-conf down ./update-resolv-conf import하려는 파일코드에서 위 코드를 삭제해주면 정상적으로 사용자 암호를 입력하라는 창이 뜨며 해결됩니다

    [바미] SSR과 CSR

    브라우저 렌더링 먼저 브라우저 랜더링이란 브라우저가 서버로부터 요청해 받은 내용을 브라우저 화면에 표시해주는 작업을 말합니다. 브라우저가 서버로부터 HTML, CSS, JS 문서를 전달받아 브라우저 엔진이 각 문서를 해석해 브라우저 화면을 그려주는 것이죠. 예를 들어, 아무 브라우저에 접속해서 주소창에 https://www.naver.com/ 을 입력한다면 브라우저는 네이버 서버로부터 네이버 웹사이트에 대한 정보를 받아 브라우저 화면에 네이버 홈페이지를 그려 주게 되는 것이죠. 그리고 이러한 브라우저 렌더링은 크게 ' 서버 사이드 렌더링'과 ' 클라이언트 사이드 렌더링' 방식으로 나누어 지죠. 서버 사이드 렌더링 서버 사이드 렌더링은 클라이언트(브라우저)가 서버에 매번 데이터를 요청하여 서버에서 처리하는..

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

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

    [바미] 트랜잭션 데드락(Transaction DeadLock)

    Transaction 트랜잭션은 하나의 작업을 수행하는데 필요한 데이터베이스의 연산을 모아놓은 것으로 데이터베이스 작업의 단위라고 생각하면 됩니다. 일반적으로 데이터베이스의 연산은 SQL문으로 이루어져 있으며 트랜잭션을 SQL문의 집합이라고도 합니다. 트랜잭션에서 중요한 것은 트랜잭션 단위로 구분해서 모두 성공하거나 실패해야 데이터베이스의 일관성을 유지할 수 있다는 것입니다. (트랜잭션 특징中) Transaction Update 트랜잭션에서 UPDATE작업을 할 때 처리과정은 아래와 습니다. UPDATE TABLE SET A = 300 WHERE A_ID = 201; 위의 쿼리를 실행하면 행 레벨 Lock UNDO SEGMENT Buffer 확보 및 정보 기록 데이터 UPDATE COMMIT & 행 Un..

    Node.js 동작 원리

    Node.JS? JavaScript를 브라우저 외부에서 실행하는 런타임입니다. Node.js는 싱글 스레드, 논블로킹 모델을 사용합니다. 이 모델은 비동기 I/O 작업을 통해 여러 요청을 동시에 처리하며, 클러스터링을 통해 확장성을 갖추고 있죠. 싱글스레드? 프로세스 내에서 하나의 스레드가 하나의 요청만을 수행합니다. 한 번에 여러 요청을 수행할 수 없는 것이죠 그래서 싱글 스레드는 블로킹 모델이라고 합니다. 반면 멀티스레드는 스레드 풀에서 실행의 요청만큼 스레드를 매칭 하여 작업을 수행합니다. NodeJS 는 완전한 싱글 스레드인가? NodeJS는 싱글 스레드이지만 완전한 싱글 스레드를 기반으로 동작하지는 않습니다. 무슨 말일까요? 일부 블로킹 작업들은 libuv의 스레드 풀에서 수행되기 때문이죠. 이..

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

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

    [바미] MySQL 트랜잭션과 락 - InnoDB 락, 이렇게 동작한다!

    트랜잭션과 락(Transaction, Lock) 트랜잭션과 락 트랜잭션 : 논리적인 작업 단위로 전부 처리되거나 처리되지 않는 (commit/rollback) 원자성을 보장하기 위한 기능이다. 락 : 서로 다른 작업에서 같은 자원을 동시에 필요로 할 때 자원 경쟁이 일어나는데, 이때 순서대로 사용되는 동시성을 보장하기 위한 기능이다. MySQL에서 사용되는 락(LocK)은 크게 MySQL 엔진 레벨의 락과 스토리지 엔진 레벨의 락으로 나눠볼 수 있다. 스토리지 엔진 레벨의 락 스토리지 엔진(InnoDB)에서 제공하는 락(Lock, 잠금)이 있다. 기본적으로 비관적 락(Pessimistic locking)을 사용한다. 비관적 락 : 트랜잭션에서 변경하려는 레코드에 대해 락을 획득하고 쿼리를 수행하는 방식 ..