목록전체 글 (540)
개발놀이터
최근에 사이드 프로젝트를 하느라 코딩을 많이해서 그런가 요즘은 이론 공부에 집중하게 되더군요. 조금 딴소리지만 처음 공식문서를 읽게 된게 Baeldung의 로컬 트랜잭션과 글로벌 트랜잭션인데 이걸 처음 읽고 충격에 빠지지 않을 수 없었습니다. 이론공부를 한다는게 이렇게 재밌는 일인가? 싶은 생각이 들었었죠. 그 때가 벌써 2년전이네요. 그 이후로 공식 문서를 보는걸 좋아했는데 짧은 영어로 한글자 한글자 해석하면서 알게되는 변태같은 심연의 지식들이 너무 좋더라구요. 이번 포스팅에선 분산 시스템에서 합의를 이뤄 리더를 선출해내는 분산 합의 알고리즘을 공부해보고 정리해봤습니다. 분산 합의 알고리즘Raft 알고리즘을 본격적으로 들어가기 전에 분산 합의 알고리즘이 어떤 것이며 왜 필요한지 정리하고 넘어가겠습..

요즘 사이드프로젝트가 끝나고 어떤 공부를 해야할지 고민중이었는데 평소에 궁금했던 gRPC에 대해서 공부해보았습니다. 이번 포스팅에선 서버간 통신에서 REST API의 대안이 된 gRPC에 대해서 정리해봤습니다. gRPC의 세가지 무기gRPC는 세개의 무기를 가지고 있습니다. 바로 헤더 압축, Protobuf, 멀티플렉싱이죠. 각각의 특징이 gRPC가 왜 서버간 동기 통신에서 선택받았는지 자세히 정리해보겠습니다. 헤더 압축저도 gRPC를 공부하면서 깜짝 놀랐습니다. 헤더 압축? 헤더가 뭐 얼마나 된다고 헤더를 압축해? 근데 엄청나게 차이가 많이납니다. 이번 섹션에선 기존 HTTP/1.1을 사용하는 REST API와 HTTP/2를 사용하는 gRPC에 각각 요청을 직접 날려보면서 패킷을 뜯어보고 헤더 압..

죄송합니다.. 블로그 인생 처음으로 어그로좀 끌어봤습니다... 이번 포스팅에선 비밀번호 암호화, 암호화 된 해시값을 추적하는 해킹 기법들, 그리고 어떻게 웹 개발자로서 방지할 수 있는지에 대해서 공부한 내용을 정리해보도록 하겠습니다. 비밀번호 암호화보통 비밀번호는 평문으로 저장하는건 위험하다고 알려져있습니다. 데이터베이스가 털렸을 때를 대비해서 비밀번호만큼은 지켜낸다는 일념인 것이죠. 데이터베이스를 털릴걸 가정하고 암호화를 한다니? 데이터베이스가 털릴걸 가정하고 암호화를 하는게 아니라 데이터베이스가 '털리더라도' 안전하게 지키는 것이 목적인 것이죠. 그런 의미에서 base64로 인코딩하는건 말도안되는 소리지요. base64는 역연산으로 얼마든지 비밀번호를 얻어낼 수 있으니까요. BCryptBCry..

이번 포스팅에선 cafe24를 거쳐 공유기 포트포워딩으로 홈서버를 구축, 그 이후에 cloudflare를 결합한 OAuth Proxy까지의 여정을 회고식으로 다뤄보려합니다. 호스팅..? 그게 뭐죠 먹는건가요때는 2021년 6월... 벌써 4년전이네요. 개발공부란걸 처음 시작하게 되었습니다. 처음엔 jsp를 이용해서 배포를 했는데 그때 당시를 회상해보면 데이터베이스 커넥션을 맺을 때 name과 password를 어떻게 설정해줘야 하는지도 모르는 새싹이었습니다. 이때 배포라는 단어도 처음 들어보고 꾸역꾸역 만들어서 배포까지 성공을 했습니다. 프로젝트가 간단하게 게시판 있고, 서버에 있는 이미지를 보여주는 단순한 쇼핑몰 느낌이었는데 제가 했던 사이드 프로젝트인 온라인 쇼핑몰처럼 큰 규모는 아니었고 작은 규..

카프카에 대한 이론적인 내용은 아마 이게 끝일 것 같습니다. 아파치 카프카 카테고리는 개념, 심화, 응용을 마지막으로 이제 실습을 해볼 예정입니다. 이번 응용편에선 이렇게 진행됩니다. Unclean Leader Election의 위험성과 사용 여부 판단Offset 관리 전략성능 최적화 및 튜닝카프카 스토리지와 OS 레벨 연계이렇게 네가지 섹션으로 이루어집니다. 한번 천천히 정리해보겠습니다. Unclean Leader Election카프카는 장애시 ISR에서 리더 파티션을 새로 뽑아 장애 상황에 최적화된 움직임을 보여줍니다. 그런데 만약 ISR에 뽑을만한 리더 파티션이 없으면 어떻게 될까요? 이럴 때 개발자는 Unclean Leader 즉, ISR에 없는 파티션 중 리더로 선출할 수 있도록합니다. ..
요즘은 카프카와 NoSQL을 공부하고 있는데 카프카는 특히 공부하면 공부할수록 왜 개발자들이 많이 사용하는지 알 것 같습니다. 공부하면 공부할수록 왜 쓰는지 이해가 된달까요.. 이번 포스팅에선 카프카와 AWS SQS, SNS와 비교하면서 왜 카프카가 대용량 메세지 처리에 능하게 되었는지에 대해서 정리해봤습니다. 카프카 vs SQS, SNS왜 다른 메세지 큐도 아니고 SQS냐하면 RabbitMQ는 메세지를 소비할 곳을 세밀하게 조정하고 싶을 때 사용하는 것이 바람직하지 대용량으로 비동기 메세지 처리를 하는데 특화되어있지는 않습니다. 다른 메세지 큐인 Redis의 Pub/Sub 또한 대용량 비동기 메세지 처리에 특화되어있지 않기도 하구요. 그런 의미에서 SQS와 SNS를 조합한 메세지 큐잉 서비스는 완전..
이번 포스팅에서는 CAP정리를 간단하게 복기해보고 CP, AP 데이터베이스의 특징에 대해서 정리해보도록 하겠습니다. CAP 정리CAP 정리는 2000년에 Brewer가 발표한 이론으로서 "분산 시스템에서 C, A, P를 모두 만족하는 데이터베이스는 없다" 라는 이론입니다. 이 이론에 대한 증명이 끝났기 때문에 더이상 이론이 아니라 정리라고 불러야하는 것이죠. CAP 정리에 대해 포스팅한 것이 있어서 그걸 좀 가져와봤습니다. https://coding-review.tistory.com/312 CAP 정리와 한계 PACELC 정리이번 포스팅에서는 Brewer (브루어)의 CAP정리에 대해서 알아보도록 하겠습니다. CAP정리가 20년도 더 된 정리이기 때문에 그걸 보완한 PACELC 정리에 대해서도 알아..

NoSQL 중에서 가장 인기있는 데이터베이스를 꼽아보라고 한다면 당연 MongoDB이지않을까 싶습니다. 저도 NoSQL에 대해서 공부하기 전에도 MongoDB는 알고 있었을 정도니까 말 다한것이죠. 오늘 포스팅에선 NoSQL 그 중에서 MongoDB가 어느 부분이 특별해서 이렇게 많은 개발자들에게 사랑받고 있는지 정리해봤습니다. MongoDB의 구성 요소MongoDB의 구성요소는 RDBMS의 그것과 굉장히 닮아있습니다. 하나씩 살펴보겠습니다. Collection : Collection은 RDBMS에서 테이블에 해당하는 개념으로 문서들의 집합체입니다. Collection은 스키마가 따로 존재하지 않아서 다양한 구조의 문서를 저장할 수 있습니다. Document : MongoDB의 데이터 저장 단위로 ..
이번 포스팅에서는 아파치 카프카에 대해서 개념만 잡았던 이전 포스팅에 이어 조금 딥한 내용을 공부해보고 정리해보았습니다. 처음엔 카프카의 구성 요소를 짧에 짚고 넘어가고 이후 카프카의 주요 개념에 대해서 알아보도록 하겠습니다. 아파치 카프카카프카의 구성요소로는 Broker, Topic, Partition, Producer, Consumer, Consumer Group이 있습니다. 하나씩 간단하게만 정리해보겠습니다. 브로커 : 브로커는 카프카가 설치되어있는 물리적인 서버에 해당합니다. 이런 브로커들이 모여서 카프카 클러스터가 되는데 이 브로커는 카프카 그 자체라고 볼 수도 있습니다. 토픽 : 메세지가 저장되어있는 "논리적인" 공간입니다. 메세지를 생산하는 프로듀서는 이 토픽을 바라보고 생산하고 컨슈머는..
최근에 공부를 쉬었다가 다시 시작하고 있다. 또 하고싶은 공부가 생기니까 이렇게 저렇게 하게되는게 신기하다. 공부는 3개월정도 쉬었는데 그동안 게임도 열심히 하고 공부생각 안하고 열심히 놀았던 것 같다. 오늘은 근황과 함께 현재 느끼고 있는 감정을 있는 그대로 써보려고한다. 최근 연봉협상을 진행했다. 만족스럽진 않지만 불황인 현재 상황을 보면 나름 나쁘지 않은 것 같다. 13퍼센트 연봉이 올랐는데 400만원이 올랐다. 기쁘면서도 조금 아쉽긴 하다. 내가 했던 성과들을 쭉 얘기하는데 대표가 그런건 아무나 다 할 수 있는거라면서 가스라이팅을 했다. 속으로 ㅅㅂ 그걸 아무나 할 수 있는거였으면 왜 지금까지 안했냐 라고 얘기하고 싶었지만 싸우자는 얘기로 들릴까봐 참았다. 잘했다고 한마디하고 그냥 가만히 있으..