목록분류 전체보기 (518)
개발놀이터
데이터베이스에는 동시성 문제를 해결하기 위해 시스템 내부적으로 다양한 방법들을 제공해줍니다. 오늘은 데이터베이스에서 사용할 수 있는 다양한 동시성 제어에 대해서 알아보도록 하겠습니다. 동시성 제어 이번 포스팅에서 중점적으로 다룰 동시성 제어 방식은 타임스탬프 기반 프로토콜 (Timestamp-Based Protocol) 낙관적 동시성 제어 (Optimistic Concurrency Control) 이렇게 두가지를 보도록 하겠습니다. 사실 저 두개 말고도 락 기반 프로토콜과 MVCC가 있는데 이 두가지는 이미 포스팅으로 다뤘기 때문에 이번엔 링크만 남기고 넘어가도록 하겠습니다. 락 기반 프로토콜 https://coding-review.tistory.com/302 Phantom Read 부정합문제 해결방안 ..
오늘은 kubernetes의 정책 관리를 맡고 있는 Istio에 대해서 포스팅 해보도록 하겠습니다. DevOps 엔지니어 모집 공고를 보면 "Istio를 기반으로한 서비스 메쉬에 대한 이해가 높으신 분" 같은 문구를 종종 볼 수 있습니다. 이것이 제가 쿠버네티스 아키텍처에서 Istio를 제일 먼저 공부하게 된 계기입니다. 어떤 놈이고 어떤 일을 하는지 공식 문서와 GPT를 이용해 공부해봤습니다. Istio 우선 쿠버네티스 아키텍처를 먼저 짚고 넘어가겠습니다. 여기서 서비스 메시라고 적혀있는 Istio가 오늘의 주인공입니다. 서비스 메시가 뭘까요? 서비스 메시란 마이크로 서비스로 이루어진 네트워크망을 뜻합니다. 즉 쿠버네티스 내부적인 네트워크 망이라고 보시면 되겠습니다. 이제 본격적으로 Istio에 대해서..
이제 대학교를 졸업할 때가 다가왔습니다. 정말 많은 일이 있었던 대학 생활 4년이었습니다. 학교 생활 자체는 그렇게까지 재밌진 않았지만 개발자로서 역량을 키우는 시간이었음은 확실합니다. 이제 이력서를 넣고 자기소개서를 쓰면서 사회인으로서 한발짝 앞으로 가고있는 제가 1년뒤에 이 회고를 다시 볼 것을 기대하며 적어보도록 하겠습니다. 대학교 안녕... 1학년땐 놀자 여러분이 대학교를 지금 들어갔다면 1학년은 무조건 놀아야합니다. 난 개발 공부가 재밌는데요? = 그럼 개발 공부 하세요. 그런게 아니라면 1학년은 제발 놀아야합니다. 진짜 밑도끝도없이 뒤가없이 놀아야합니다. 노는게 지겨워!! 할때까지 미친놈처럼 놀아야합니다. MT도 가보고 술도 꽐라될때까지 먹어보고 게임도 새벽 내내 하고 대학교 강의땐 자고 게임..
이번 포스팅에선 Redis와 Memcached의 동시성 문제에 대해서 궁금증이 생겨서 공유하고자 글을 쓰게 되었습니다. 구글링하다 Redis-Semaphore로 Mutex 해결하기 라는 제목의 포스팅을 발견했습니다. 처음엔 보고 "으잉? 이게 무슨말이야?" 하게 됐는데 Mutex는 동시성 문제를 해결하는 방법론인데 Mutex를 해결..? 아마 포스팅 쓰신 글쓴이분께서 Mutex의 뜻을 착각하고 계신게 아닌가 싶었습니다. 그래서 그 부분은 넘어가도록 하고 Redis-Semaphore라는게 걸려서 이번에도 역시 GPT로 공부해봤습니다. Redis와 Memcached의 차이 우선 이 둘의 차이부터 짚고 넘어가도록 하겠습니다. Redis 싱글스레드이다. 여러가지 자료형을 제공한다. String, Hash, Li..
Q. TCP의 흐름 제어와 혼잡 제어에 대해서 설명해주세요. A. 흐름 제어는 송신자와 수신자 사이에서 벌어지는 현상이고 송신자가 보내는 패킷의 크기가 수신자의 수용 용량보다 클 경우 수신자의 버퍼를 동적으로 늘리기 위해 잠시 시간을 벌어주는 용도로 사용됩니다. 이때 sliding window 방식으로 수신자가 ACK 패킷을 전달할 때마다 일정량의 데이터를 보내주는 것이 특징입니다. 혼잡 제어는 송신자와 수신자와의 통신뿐만 아니라 더 넓은 범위에서 일어나는 현상으로서 네트워크 트래픽이 너무 많아지는 경우 패킷이 로스되는 것을 막기 위해 트래픽 레벨의 모니터링을 통해 혼잡을 막기위해 window 크기와 전송 속도를 제어하는 역할을 합니다. Q. window 크기가 뭔가요? A. 단위 시간당 전송되는 패킷의..
우리가 흔히 말하는 네트워크 통신은 TCP 3way handshaking에 의해 일어납니다. 그리고 TCP에 대해 조금 공부해보신 분들은 UDP와의 차이도 말할 수 있죠. UDP와 다르게 TCP는 전이중 방식과 점대점 방식 그리고 흐름제어와 혼잡제어를 통해 높은 신뢰성을 줄 수 있다고 말이죠. 잠시 설명하자면 전이중 방식은 전송이 양방향으로 이어진다는 뜻이고 점대점 방식은 각 연결점이 종단점을 가진다는 것입니다. 하지만 흐름제어와 혼잡제어는 그냥 외우기만해서 잘 모르더라구요. 이 부분에 대해서 본격적으로 공부해봤습니다. 흐름 제어 흐름 제어는 송신자와 수신자 사이에 버퍼(데이터를 받을 수 있는 용량)를 관리하기 위해 나온 방법론입니다. 만약 송신자가 수신자에게 엄청나게 큰 데이터를 넘겨준다고 생각해봅시다..
이번 포스팅에선 데이터베이스 프로시저에 대해서 알아보도록 하겠습니다. 면접 봤는데 해당 내용이 나왔고 대답을 못했습니다. 다음 면접을 위해 정리해두는 느낌으로 포스팅 해보도록 하겠습니다. 데이터베이스 프로시저 프로시저란 무엇일까요? 간단하게 쿼리 묶음이라고 생각하시면 됩니다. 만약 자주 사용하는 SQL문이 있다면 그것들을 정리해둔 것이죠. 한번 간단한 예시를 상정해보고 코드 예제까지 보여드리겠습니다. "books"라는 테이블에 새로운 책을 입력할 것입니다. "books"테이블에 특정 책의 수량을 변경할 것입니다. 데이터가 바뀐 책의 상세 데이터를 요청해보겠습니다. DELIMITER // CREATE PROCEDURE ManageBook(IN bookTitle VARCHAR(255), IN bookAuth..
개인적으로 쿠버네티스에 관심이 있어서 표면적인 지식을 학습하려고합니다. 쿠버네티스는 구글에서 개발한 오픈소스 컨테이너 오케스트레이션 도구이며 구글에서 가이드라인을 주기로는 행성급 애플리케이션(약 10억개의 컨테이너)에 어울리는 기술이라고 합니다. 때문에, 웬만한 기업에선 쿠버네티스를 사용하는 것이 오히려 유지보수적인 측면에서 독이 될 정도로 사용하기 까다로운 기술 중 하나입니다. 신입인 저는 공부하는 것이 오버스펙이라고 주변에서 뜯어말리지만 공부는 그냥 자기가 하고싶은거 하는게 최고이지 않겠습니까 공부해서 손해보는 공부는 없으니까요. 그래서 사람들 말 무시하고 제가 하고싶은 공부 하기로 했습니다. 쿠버네티스란? 위의 사진은 개발 단계를 표현한 그림입니다. 맨 처음 전통적인 개발 방식은 하드웨어에 OS를 ..
이 자격증을 따느라 블로그 포스팅이 조금 뜸해졌습니다. 이번 포스팅에선 다시 시작한다는 마음으로 회고를 작성해보도록 하겠습니다. AWS 자격증 AWS의 자격증은 위와같이 나누어져있습니다. 크게는 3단계로 나누어져있고 분야는 아키텍트, 운영, 개발자, 네트워킹, 빅데이터, 보안, 머신러닝, AI로 이루어져있습니다 ( 맨 오른쪽 아래 Alexa는 아마존의 AI입니다. ). 저는 개발자 트리를 타야할 것 같아서 Developer를 땄는데 아키텍트쪽이랑 운영쪽은 어떤 것을 시험 보는지 모르지만 Developer쪽은 다양한 것을 시험봅니다. 배포 (22%), 보안 (26%), AWS 서비스 (30%), 리팩터링 (10%), 모니터링 및 문제해결 (12%) 도합 100퍼센트 비율로 시험이 출제됩니다. 계기 이번 연..
앞선 포스팅과 이어지는 내용입니다. https://coding-review.tistory.com/460 Elastic Load Balancer (ELB) : (1) 이번 포스팅에선 AWS의 핵심 시스템 중 하나인 Elastic Load Balancer 줄여서 ELB에 대해서 알아보도록 하겠습니다. ELB는 개발자에게 그리고 AWS에게도 빠질 수 없는 중요한 시스템인데요. 만약 개발자에 coding-review.tistory.com 우리는 인스턴스를 생성했고 로드밸런서를 생성했으며 타겟그룹까지 생성했고 로드밸런서에 타겟그룹을 라우팅하는 작업까지 끝났습니다. 근데 이러고 보니까 조금 문제가 있습니다. 바로 사용자가 로드밸런서에 접근할 때마다 새로운 애플리케이션으로 연결해주는데 로그인을 했는데도 로그인이 풀려..