개발

· 개발
Redis의 FailOver상황을 대비해 replication을 구성하는 경우가 많습니다. 이때 Sentinel 또는 Cluster를 구축하지 않으면 일시적인 FailOver만 극복할 수 있기 때문에 장애가 지속될 경우 데이터가 유실됩니다. 해당 글에서 Redis의 replication들을 고가용성으로 사용하기 위한 Redis-Sentinel에 대해 알아보도록 하겠습니다. Replication 데이터의 유실을 막거나 트래픽 분산을 위해서 replication을 구성하는 경우가 많은데 replication을 구성하기 위해서는 master(read/write)와 slave(read)가 있어야 합니다. slave는 master의 데이터를 미러링 하고 있는 read전용 replication입니다 Redis re..
· 개발
앞선 게시글에서 협업을 위한 기능들을 살펴보았습니다. Linting & Formatting Workflow & Git-convention 모든 부분에서 그렇지만 구두로의 약속은 지키기 어렵습니다. 새로운 사람이 작업에 참여하거나 개인의 실수로 인해서 약속을 지키지 못하는 경우가 생기기 마련입니다. 따라서 시스템적으로 해당 설정들을 일부분 강제해주는 것이 퀄리티를 높이는 가장 좋은 방법이라고 생각합니다. 해당 게시글에서는 git-hook을 이용해서 linting & formatting, commit-message를 형식에 맞추어 commit 하는 방법에 대해 알아보도록 하겠습니다. Git hook Git hook이 무엇인가요? 커맨드 이벤트 (add, commit, push 등) 전/후에 호출이 되는 코드..
· 개발
많은 사람들과 협업할 때 하나의 브랜치에서 모두가 작업하는 방식은 적절하지 않다고 생각됩니다. 작업이 유의미하게 분리되고 서로의 작업을 침범하지 않으려면 적절하게 브랜치를 분기해야 하고 이때 어떤 방식으로 브랜치를 만들어 갈지 고민하게 됩니다. 또한 커밋이라 하면 유의미한 변화가 이루어진 하나의 작업 단위라고 합니다. 이때 commit-history는 작업일지와 같은데 어떤 방식으로 일지를 남길지 고민하게 됩니다. 정해진 규칙대로 브랜치를 분기하고 commit-message를 작성하게 되면 아래와 같은 이점을 얻을 수 있습니다. Git 컨벤션을 따라야하는 이유 주관적인 스타일에서 벗어나 통일된 스타일을 추구 올바른 branch name 을 통한 workflow 유지와 해당 task 추적을 용이하게 함 새..
· 개발
Linter 코드를 분석해서 문법 에러, 버그를 찾아주는 도구를 말합니다. 문법 에러, 특정 문법 사용 등 코드 퀄리티와 관련된 작업을 수행합니다. 상황에 따라 고쳐주기 까지하며 언어에 맞는 문법을 지킬 수 있도록 도와줍니다. 자바스크립트에는 JS Lint JS Hint ESLint 가 존재합니다. 파이썬에는 pylint pycodestyle pyflakes flake8 pyright 가 존재합니다. 해당 글 에서는 ESLint와 flake8을 사용했습니다. Formatter 한 줄의 최대 길이나, tab을 쓸 것인지 space를 쓸 것인지, 인용 스타일은 무엇을 쓸 것인지 등 문법적으로는 문제가 되지 않지만 코드의 미학적인 부분을 바로잡는 작업을 수행합니다. 일관적인 코드 스타일을 강제 함으로써 전체적..
· 개발
What is race condition Race condition 또는 경쟁상태라고 불립니다. 본문에서는 경쟁상태라고 부르겠습니다. 결승지점에 도착하는 순서에 따라 등수가 다르게 매겨지는 것처럼 병행하게 진행 중인 프로그램들이 특정 지점에 도착하는 순서에 따라서 다르게 작동하는 것을 말합니다. 주로 비동기적 시스템(e.g. multi-process, multi-threaded, microservices)에서 프로그램이 병행하게 진행될 때 흔하게 나타나는 버그입니다. 해당 글에서는 아래의 자판기 시나리오를 통해서 설명하도록 하겠습니다. 해당 시나리오가 병행하게 진행될 때 어떤 경우가 가능한지 확인해 보겠습니다. 모든 음료는 천 원이며 현재 갖고 있는 돈은 천 원이라고 가정합니다. 음료가 반환되기 전에 버..
반응형
sawaca96
'개발' 카테고리의 글 목록 (2 Page)