ETC 25

[git] merge, rebase

0. branch 깃에서 merge와 rebase를 알아보기 위해서는 브랜치부터 알고 넘어가야 합니다. 브랜치는 가지라는 뜻으로 소스코드를 여러 버전으로 관리할 수 있게 해줍니다. 여러 버전으로 관리함으로써, 현재 배포되어 있는 브랜치를 따로 관리하고, 기능을 개발하고 있는 버전의 브랜치 또는 급하게 수정해야되는 핫픽스 브랜치 등으로 나눠서 관리하여 코드 관리를 편하게 할 수 있습니다. 깃헙에서 레포지토리를 처음 생성하면 main이라는 기본 브랜치를 생성해줍니다. main에서 출발하는 브랜치를 생성하면, 처음에는 현재 main 브랜치와 똑같은 상태가 복사되어 새로운 브랜치가 생성이 됩니다. 브랜치 생성은 아래의 명령어로 수행할 수 있습니다. git branch new_branch 생성된 브랜치로 전환하려..

ETC/Git 2021.03.06

[Redis] Redis란? & Redis 사용방법

0. 개요 서비스를 개발하다보면, 서비스 속도가 종종 문제를 일으킵니다. 그래서 속도를 높이기 위해 다양한 방법을 활용하는데, 그 중에 오늘은 Redis를 활용하는 방법을 알아보고자 합니다. 일반적으로 데이터베이스는 저장장치에 저장이 되는데, 데이터베이스를 조회하려면 저장장치로 i/o가 발생합니다. 캐시는 in-memory 방식을 활용하여 데이터를 임시로 저장해두기 때문에 저장장치의 i/o보다 훨씬 빠르게 동작할 수 있습니다. 그래서, 자주 사용하는 데이터는 캐시 서버에서 우선 조회하고 없을 때는 데이터베이스를 다시 조회하는 방식을 활용하면 전체적인 서비스의 속도를 향상시킬 수 있습니다. 또, 쿼리가 길고 복잡한 경우에도 데이터베이스를 조회하는 시간이 오래 걸리는데, 이 쿼리가 자주 사용되는 경우라면 해..

ETC/Redis 2021.02.07

[git] 깃 브랜치 전략, git branching strategy - GitFlow

git은 소스코드를 관리하는데 도움을 주는 툴입니다. git에는 branch라는 기능이 있습니다. branch는 말 그대로 가지를 뜻하며, 해당 가지에 대해서 다른 버전으로 코드를 관리할 수 있습니다. 개발을 할 때는 배포되는 버전, 개발 중인 버전, 급한 버그를 픽스하는 버전, 리뷰를 하는 버전 등으로 코드를 나누어 관리를 하게 되는데, 이러한 복잡한 관리를 branch를 활용하면 편하게 관리할 수 있습니다. GitFlow 전략 그래서 이러한 branch를 관리하는 전략 중에 가장 유명한 전략이 GitFlow라는 전략입니다. GitFlow 전략은 그림(nvie.com/img/git-model@2x.png)부터 보시면, 아래와 같습니다. 위에서 부터 내려오고, 각 동그라미가 branch입니다. GitFl..

ETC/Git 2021.01.24

[Docker] RUN, CMD, ENTRYPOINT 차이점

도커파일 작성 시에, 사용할 수 있는 명령어 중에 실행하는 것과 관련된 명령어는 RUN, CMD, ENTRYPOINT 세 가지가 있습니다. 세 명령어에 대한 차이점을 예시와 함께 확인해보도록 하겠습니다. 1. RUN 이 중에 RUN 명령어는 확연한 차이가 있습니다. RUN 명령어는 도커파일로부터 도커 이미지를 빌드하는 순간에 실행이 되는 명령어입니다. 그래서, RUN 명령어는 라이브러리 설치를 하는 부분에서 주로 활용이 됩니다. FROM python:3.7.9 RUN pip install -r requirements.txt 위와 같은 도커파일 예시에서, RUN 명령어를 활용하여 필요한 파이썬 라이브러리를 설치할 수 있습니다. 2. CMD CMD 명령어는 RUN 명령어가 이미지를 빌드할 때 실행되는 것과 ..

ETC/Docker 2021.01.10

[Kafka] 카프카 기본 실습

1. 카프카 설치 카프카 실습을 위해서 설치를 해볼건데, 간편하게 도커로 해보도록 하겠습니다. 카프카는 공식 도커 이미지가 없습니다. 그래서 찾아보니, 아래 링크를 사람들이 많이 활용을 한다고 해서 저도 한번 활용을 해보았습니다. github.com/wurstmeister/kafka-docker wurstmeister/kafka-docker Dockerfile for Apache Kafka. Contribute to wurstmeister/kafka-docker development by creating an account on GitHub. github.com 먼저 git clone을 해주고 해당 디렉토리로 들어갑니다. git clone https://github.com/wurstmeister/kafk..

ETC/Kafka 2020.12.27

[Kafka] 카프카 데이터 모델

카프카의 데이터 모델은 토픽과 파티션으로 나누어집니다. 토픽은 메시지를 받을 수 있도록 논리적으로 묶은 개념, 파티션은 토픽을 구성하는 데이터 저장소로서 수평 확장이 가능한 단위라고 합니다. 토픽 메일 시스템을 생각해 보면, 메일 서버에는 많은 메일이 마구 섞여 있고, 원하는 메일을 찾기 위하여 메일 주소로 관리합니다. 카프카에서의 토픽이 메일 주소와 같은 개념입니다. 예를 들어 뉴스 토픽, 이미지 토픽이 존재하면 뉴스와 관련된 프로듀서들은 뉴스 토픽으로만 데이터를 보내고 이미지와 관련된 프로듀서들은 이미지 토픽으로만 메시지를 보냅니다. 뉴스 데이터만 보고 싶으면, 컨슈머에선 뉴스 토픽에서만 메시지를 가져가고 이미지 데이터만 보고 싶으면 이미지 토픽에서만 데이터를 가져가서 사용할 수 있습니다. 토픽 이름..

ETC/Kafka 2020.11.29

Producer-consumer pattern

자연어처리에서는 거대한 언어 모델을 학습하기 위해 방대한 양의 학습 데이터를 사용합니다. 학습 데이터의 전처리도 성능에 많은 영향을 끼치면서 전처리를 많이 하고 있는데 학습 데이터의 양이 너무 크다보니 오히려 학습보다 전처리가 더 오래 걸리기도 하여 학습 데이터의 전처리에서는 병렬처리가 필수가 되고 있습니다. 그래서 오늘은 병렬처리를 할 때, 유용한 패턴을 하나 소개해보겠습니다. 병렬처리에 대해서 공부하게 되면, 꼭 빠지지 않고 등장하는 것 중에 하나가 producer-consumer pattern(프로듀서-컨슈머 패턴;생산자-소비자 패턴)입니다. RabbitMQ, Kafka와 같은 메시징 큐를 보면 producer와 consumer는 절대 빠지지 않습니다. producer와 consumer가 무엇인지 ..

ETC/Pattern 2020.08.02

Kafka 개요 / 설치

자연어처리만 하다가, 최근에는 회사에서 개발한 자연어처리 기술을 활용하는 서비스를 개발하는 역할도 맡게 되면서, 메시징 큐에도 관심이 생겨서 여러가지 찾다보니 카프카라는 것을 알게 되었습니다. 그래서 카프카에 대해서 한번 알아보고자 합니다. 1. 카프카란? 카프카는 대용량의 메시지 데이터를 빠르게 처리하도록 개발된 메시징 플랫폼으로 링크드인에서 출발해, 2011년 초 아파치 공식 오픈소스로 등록되었으며 현재는 넷플릭스, 에어비앤비, 마이크로소프트, 카카오 등에서 데이터 파이프 라인으로 사용되고 있습니다. 위 그림은 카프카 개발 이전의 링크드인 시스템 구조입니다. 링크드인의 시스템이 커지면서, 동일한 메시지를 여러 곳에 보내줘야하고 점점 연결이 많아져 확장도 어려워져서 고안하게 된 것이 카프카입니다. 카프..

ETC/Kafka 2020.07.19

vscode를 활용하여 원격 서버의 docker container에 접속하는 방법

최근에는 도커를 많이 사용하고 있습니다. Tensorflow도 사용하고 Pytorch도 사용하고 있는데, CUDA 버전도 달라야하고 하다보니 자연스럽게 도커를 사용하게 되었습니다. IDE는 vscode를 사용하고 있었는데, 찾아보니 vscode는 remote server에서 돌아가고 있는 docker container에도 접속해서 개발을 할 수 있는 환경을 제공하고 있더군요. 그래서 오늘은 vscode를 활용해서 remote server의 docker container에 접속해서 개발환경을 세팅하는 방법에 대해서 정리해보고자 합니다. 먼저 내 컴퓨터에 vscode와 docker가 설치되어 있어야하고, remote server에도 docker가 설치되어 있어야 합니다. 내 컴퓨터에는 왜 docker가 설치..

ETC/VScode 2020.05.24

vscode를 활용하여 원격 서버에 연결하기

회사에서 서버를 사용할 때, putty를 활용하는데 IDE를 사용하고 싶다는 생각이 문득 들어서 찾아보니 vscode는 community 버전을 활용해도 서버랑 원격 접속을 할 수 있더군요! 그래서 오늘은 윈도우에서 리눅스 서버로 접속할 때, vscode를 활용해서 IDE를 활용하여 서버에서 코딩을 할 수 있는 환경을 구성해보도록 하겠습니다. vscode는 아래의 주소에서 클릭하여 설치하시면 됩니다. https://code.visualstudio.com/download Download Visual Studio Code - Mac, Linux, Windows Visual Studio Code is free and available on your favorite platform - Linux, macOS, ..

ETC/VScode 2020.01.30