개발자 블로그 82

글또 5기 회고

글또 5기가 어느새 끝나서, 회고하는 시간을 벌써 갖게 되었습니다. 2주에 1번 블로그를 쓴다는 것이 생각보다 힘들었는데 어느새 글또 4기, 글또 5기까지 와서 제 블로그에도 글이 꽤 많아지게 되었네요. 글또 5기를 시작한 시점이, 이직과 딱 맞물린 시점이였는데 이직하면서 백엔드 개발자로 전향하게 되어 글또 5기 시작 직전에 ai엔지니어에서 백엔드로 조를 변경했던 것이 기억이 납니다. 그래서 5기를 하면서는 카프카, 도커, 깃, 쿠버네티스, Redis 등에 대한 글을 쓰면서 인공지능과 관련된 글을 거의 썼던 4기와는 완전히 다른 글들을 썼네요. 이직하고 백엔드 개발자로 전향하면서, 회사에서 일하면서 필요했던 기술들에 대해서 조금씩 정리를 했던 것 같습니다. 6개월이 조금 안된 시간인데 이것저것 많이 공부..

나의 이야기 2021.05.02

[Python] numpy와 랜덤함수

개요 딥러닝을 하다보면, 벡터 연산을 하는 코드를 많이 짜게 됩니다. 딥러닝을 배워서 파이썬으로 개발을 처음 하시는 분들을 보면 종종 파이썬의 기본적인 라이브러리만 활용하여 코드를 짜시는 걸 종종 보았는데요. 결론부터 말씀드리면, 그 경우 너무 느립니다. 파이썬 언어 자체가 속도가 매우 느리기 때문에, 파이썬에서는 C언어를 쉽게 연결하여 사용할 수 있는 방법이 많이 있습니다. 정말 커스텀하게 코드를 짠다면 Cython이라는 것을 사용할 수도 있고, 이미 C언어로 동작하는 라이브러리도 많이 존재합니다. 그 중에서 소개 드릴 것은 Numpy인데요. 아마 파이썬을 조금 써보신 분들은 Numpy를 많이 들어보셨을건데, 왜 써야하는 지 잘 모르시는 분들도 많으실 것 같아요. Numpy를 써야하는 이유는 연산 속도..

python 2021.04.18

[Kubernetes] Taint / Toleration

쿠버네티스 클러스터를 운영하다보면, 특정 워커에는 배포가 되지 않도록 막고 싶은 경우가 생길 수 있습니다. 예를 들어, 딥러닝 어플리케이션들이 배포되는 클러스터에서 일부 워커에만 GPU가 붙어있을 때 GPU가 필요없는 어플리케이션들은 해당 워커들에 배포가 되지 않도록 막고 싶은 경우입니다. 이럴 때 사용할 수 있는 기능이 Taint/Toleration 입니다. Taint Taint란 한국어로는 얼룩이라는 뜻으로, taint가 설정된 노드에는 일반적인 pod는 배포될 수 없으며 taint가 지정된 노드에는 toleration을 적용하면 배포할 수 있습니다. Taint 설정 방법 Taint는 아래와 같이 설정할 수 있습니다. >> kubectl taint node [NODE_NAME] [KEY]=[VALUE..

ETC/Kubernetes 2021.03.21

[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

글또 5기 다짐

글또 4기를 무사히 마무리하고, 2020년 11월부터 다시 시작하는 글또 5기에서도 계속 활동하기로 하였습니다. 글또 4기를 하면서 블로그를 쓰다보니 다른 사람들이 읽었을 때 이해할 수 있어야 한다는 생각으로 쓰다보니, 스스로도 더 깊게 자세히 공부를 하게되고 또 정리를 해둠으로써 다시 볼 수도 있고 그런 부분이 너무 좋았었기에 글또 5기에도 합류를 하였습니다. 글또 4기가 끝나는 시점에 병역특례(전문연구요원)가 끝이 났고, 바로 이직을 도전하여 앞으로는 기존과는 달리 서비스 백엔드 개발을 하게 되었습니다. 그에 따라서, 글또 5기에서는 백엔드 개발에 대해서 공부하면서 내용을 정리하는 블로그를 쓰게 될 것 같습니다. 글또 5기에서도 4기에서 처럼 2주에 한번 씩, 빠뜨리지 않고 꾸준히 글을 쓰고 새로운 ..

나의 이야기 2020.11.14