전체 글

👩‍💻 Programming/Infra Engineering

도커 네트워크

네트워크에 대한 기본 개념이 제대로 잡혀있지 않은 경우, 도커나 쿠버네티스, cloud service에 대한 이해도가 떨어진다. 도커 네트워크의 이해 도커 네트워크의 구조 docker0 → veth → eth0 (컨테이너), bridge로 연결 bridge는 2개 이상의 네트워크를 L2 레벨로 연결하여 1개의 싱글 LAN(docker)으로 통신 (스위치와 유사함) 컨테이터는 독립된 리눅스라고 생각해볼 수 있다. veth는 Pair 가상 네트워크 인터페이스이다. 두 개의 namespace를 연결한다. 네임스페이스는 커널에서 제공하는 자원을 독립적으로 사용할 수 있게 한다. apache, nginx를 동시에 사용할 수 있다. 80번 포트 동시 사용 가능, 내부로는 5000번 5001번.. 라이브러리 버전 충..

⛅ Cloud Study/📦️ Database

NoSQL vs SQL (MongoDB vs MySQL)

MySQL은 SQL을 사용하는 대표적인 데이터베이스이다. 몽고디비는 SQL을 사용하지 않는, NoSQL(Not only SQL) 데이버테이스의 대표이다. SQL과 NoSQL의 차이는 다음과 같다. (여기서 NoSQL의 특징은 몽고디비의 특징이다.) SQL(MySQL) NoSQL(몽고디비) 규칙에 맞는 데이터 입력 자유로운 데이터 입력 테이블 간 JOIN 지원 컬렉션 간 JOIN 미지원 트랜잭션 지원 트랜잭션 미지원 안정성, 일관성 확장성, 가용성 용어(테이블,로우,컬럼) 용어(컬렉션, 다큐먼트, 필드) NoSQL에는 고정된 테이블이 없다. 컬렉션이라는 개념이 있지만, 컬럼을 따로 정의하지는 않는다. 몽고디비에는 JOIN 기능이 없어서 하나의 쿼리로 여러 테이블을 합치는 작업이 항상 가능하지는 않다. 트랙..

👻 Review/도서 후기

[Node.js 교과서 정리] 2. 서버로서의 노드

노드를 서버로 사용할 때의 특징과 장단점을 알아볼 것이다. 노드가 싱글 스레드, 논블로킹 모델을 사용하므로 노드 서버 또한 동일한 모델일 수밖에 없다. 노드 서버는 I/O가 많은 작업에 적합하다. 노드는 libuv 라이브러리를 사용하여 I/O 작업을 논블로킹 방식으로 처리해준다. 따라서 스레드 하나가 많은 수의 I/O를 혼자서도 감당할 수 있다. 하지만 CPU 부하가 큰 작업에서는 적합하지 않다. 싱글 스레드 방식의 프로그래밍은 멀티 스레드 방식보다 상대적으로 쉽다. 서버 프로그래밍에 익숙하지 않은 사람도 쉽게 입문할 수가 있다. 하지만 싱글 스레드이다 보니 하나뿐인 스레드가 에러로 인해 멈추지 않도록 잘 관리해야 한다. 에러를 제대로 처리하지 못하면 서버 전체가 멈춘다. 웹 서버가 내장되어 있어 입문자..

👻 Review/도서 후기

[Node.js 교과서 정리] 1. 핵심 개념

1. 서버 서버는 네트워크를 통해 클라이언트에 정보나 서비스를 제공하는 컴퓨터 또는 프로그램이다. 서버는 클라이언트가 요청을 하면 응답을 한다. 2. 자바스크립트 런타임 Node.js는 크롬 V8 자바스크립트 엔진으로 빌드된 자바스크립트 런타임이다. Node.js는 이벤트 기반, 논블로킹 I/O 모델을 사용해 가볍고 효율적이다. Node.js의 패키지 생태계인 npm은 세계에서 가장 큰 오픈 소스 라이브러리 생태계이다. 런타임은 특정 언어로 만든 프로그램들을 실행할 수 있는 환경을 뜻한다. 즉, 노드는 자바스크립트 프로그램을 컴퓨터에서 실행할 수 있게 해준다. 기존에는 인터넷 브라우저 위에서만 실행할 수 있었다. 그 외의 환경에서는 속도 문제가 있었으나 구글이 V8 엔진을 사용하여 크롬을 출시하자 속도 ..

👩‍💻 Programming/Backend

[Node.js] 휴대폰 인증, 이메일 인증 구현하기

g-song-ii.tistory.com/3 네이버 SENS API와 Node.js로 휴대전화 SMS 인증하기 안드로이드에서 받아온 유저의 휴대폰 번호를 Node.js 서버로 넘겨 네이버 SENS API로 인증 문자를 보내려고 합니다. 먼저 제가 현재 졸업작품으로 개발 중인 프로젝트는 이더리움 블록체인을 이 g-song-ii.tistory.com velog.io/@neity16/NodeJs-%EC%9D%B4%EB%A9%94%EC%9D%BC-%EC%9D%B8%EC%A6%9D-%EA%B5%AC%ED%98%84nodemailer NodeJs - 이메일 인증 (nodemailer) : Node.js에서 사용하는 이메일 전송 라이브러리Emoji를 포함한 Unicode를 지원Plain text는 물론이고, HTML ..

👩‍💻 Programming/Software

[개발방법론] 폭포수 설계

개발방법론 (폭포수 모델) scrum과 폭포수 개발방법론을 섞어야 한다. 개발→ 계획 → 설계 → 구현 이 포코드 기준으로 되어 있다. 중간중간 필요한 산출물들은 만들어줘야 한다. (에자일 방법론에서는 큰 의미는 없지만, 꼭 같이 병행을 해야 한다.) 1. 계획 wbs가 나와야 한다. 기능에 대한 법위와 일정을 관리하는 방법론. 타임틸, 화면 설계 언제 이러한 산출물을 만들어낼 것인지를 계획서에 넣어야 한다. CPM, 간트 차트 등 기능 점수. 기능에 따른 가중치를 연산해서 소모되는 비용 계산이 가능하다. 소프트웨어 대가 산정. (법) 이상적이지만 보완할만한 대가 산정한 방법은 없다. 2. 분석 요구사항은 하나의 큰 학문. 중요하게 생각을 한다. 실질적으로 고객은 엔지니어가 아니다. (반응속도 등) 기능..

🚀 AI

추천 알고리즘의 유형과 그 동작원리

이 글은 갉아먹는 딥러닝 블로그의 추천시스템 시리즈( yeomko.tistory.com/3?category=805638 )와 출처의 글들을 참고해서 저의 견해를 추가한 공부를 위한 정리글입니다.1. 추천 알고리즘의 종류Contents Based Filtering각각의 사용자와 아이템에 대하여 프로필을 작성하고, 이를 기반으로 추천DB 설계, 수작업, 카테고리 기반의 추천 방식에 의지하는 국내의 알고리즘이 위의 방식을 따른다.Collaborative Filtering프로필 데이터 없이, 사용자의 과거 행동 데이터만 가지고 추천을 진행데이터를 Flow 형태로 바꿔야 하고, 행동 데이터 log를 쌓아야 한다.DB 설계가 복잡하고, 데이터 전처리와 모델링에 수학이 많이 필요하다.Hybrid FilteringCo..

나리 집사
클라우드 개발 일지