전체 글 555

온라인 홈쇼핑 ver.2 (개요)

유튜브를 보다가 시니어 개발자분들이 나와서 얘기하는 것 중에 Version 2 를 만들어봐라 시간이 된다면 3, 4 이렇게 점진적으로 고도화시켜봐라 그것이 반드시 도움이 될것이다 라는 얘기를 들었습니다. ver.2 를 만들기 위해서는 어느정도 큰 규모의 서비스여야 한다고 생각이 들어서 제가 만든 프로젝트 중에 가장 규모가 큰 온라인 홈쇼핑을 ver.2로 만들기로 했습니다. 기존 ver.1 에서의 문제점을 분석하고 해결할 수 있는 기술을 공부하고 테스트하고 적용하기까지의 블로그 포스팅이 될 것 같습니다. 우선 제가 분석한 제 온라인 홈쇼핑 ver.1의 문제점은 다음과 같습니다. 인증, 인가에 Spring Security를 사용하고 있는데 추가적인 레이어가 필요할 것 같다 현재는 세션을 쓰고있음 데이터베이스..

Apache Kafka (with Chat GPT)

요즘 MicroService Architecture (이하 MSA) 에 관심이 생겨서 이것저것 알아보던 중에 Kafka라는 서비스를 알게되었습니다. 쉽게 얘기하면 각각 떨어져있는 서비스들 사이에서 메시지를 주고받을 수 있도록 하는 서비스입니다. 기존 카프카가 없을 때 메시지를 보내려면 위와 같이 모든 컴포넌트가 메시지를 쏴줘야 하는 문제가 있었습니다. (딱봐도 문제가 있게 생겼습니다) 이렇게 데이터를 보내게 되면 데이터 복잡성이 증가하겠죠. 하지만 카프카가 도입되면서 메시지를 보내는쪽 (Publisher) 과 메시지를 받는쪽 (Subscriber) 을 나누고 카프카를 통해 메시지를 주고받으면서 조금 더 편하게 데이터를 주고 받을 수 있게 되었습니다. 이번 포스팅에선 메시지 브로커 (메시지 큐잉 서비스) ..

여태까지 공부한 운영체제 질문 / 답변

https://coding-review.tistory.com/346 여태까지 공부한 네트워크 면접질문 / 답변 https://coding-review.tistory.com/345 여태까지 공부한 데이터베이스 면접질문 / 답변 https://coding-review.tistory.com/344 여태까지 공부한 Spring 면접질문 / 답변 https://coding-review.tistory.com/343 여태까지 공부한 Jav coding-review.tistory.com 앞선 포스팅과 이어집니다. 70. 프로스세와 스레드에 대해서 설명해주세요. 프로세스는 컴퓨터가 연속적으로 실행하는 프로그램이고 스레드는 프로세스 안에서 실행되는 흐름의 단위입니다. 프로세스는 고유한 주소와 데이터 공간을 할당받고 독립적..

인증과 인가

평소에 인증과 인가에 대해서 자세히 알고있지는 않았습니다. 사실 인가가 뭔지도 잘 몰랐습니다. 이참에 공부를 해야겠다고 생각이 들더군요. 때문에 이번 GPT에게 물어본 내용은 인증과 인가입니다. 거기에 제가 알고있던 부분을 첨가해서 포스팅 작성해보도록 하겠습니다. ※ GPT야 이것좀 알려줘 카테고리는 원래 제가 작성하는 주제 (자바, 스프링, CS, 알고리즘) 와 다른 하지만 평소에 궁금했던 내용을 작성합니다. GPT가 답변한 내용은 ~이다 체로, 제가 작성한 부분은 ~습니다 체로 작성됩니다. 인증과 인가 포스팅을 시작하기 전에 인증과 인가에 대한 정의를 먼저 말씀드리고 가야겠군요. 인증 : 말그대로 신뢰할 수 있는 사용자라고 인증하는 것 인가 : 사용자가 할 수 있는 행위를 제한하는 것 인증과 인가에 ..

CS 지식/보안 2023.05.04

Rust와 Go

트위터에서 개발자들의 얘기를 들어보면 Go를 사용해서 치명적인 버그가 발생했다. 그에비해 Rust는 아주 대단한 언어다. 라는 글을 몇개 본적이 있습니다. 그러면서 어떤분은 운영체제만큼은 C로 개발하는 것이 일반적이었으나 마이크로소프트가 터미널 커널을 C에서 Rust로 바꾸는 작업을 진행하고 있다는 게시글을 첨부하며 Rust를 찬양(?) 하는 모습도 보여줬습니다. 문득 궁금하더군요 Rust와 Go의 차이가 무엇이고 왜 Go는 멸시받고 Rust가 흥하게 되었는지말이죠. 이번 카테고리는 새롭게 출범하는 "GPT야 이것좀 알려줘" 입니다. 제 블로그 주제 (자바, 스프링, CS, 알고리즘문제) 와 어긋나는 주제들 하지만 평소에 궁금했던 내용들을 GPT를 통해 더블체크없이 단순히 상식을 쌓아가는 느낌으로 공부하..

Redis를 이용해 세션 구현하기 (with Spring)

저번 포스팅에선 Redis를 이용해 캐싱을 구현해봤습니다. https://coding-review.tistory.com/365 Redis를 이용해 캐싱 구현하기 (with Spring) 저번 포스팅에선 Redis의 기본적인 개념에 대해서 알아봤습니다. Redis가 어떻게 NoSQL중에서 가장 빠른 성능을 보여줄 수 있었는지, 자료구조는 어떤 것을 지원하는지, 사용처는 어떤게 있는지, 배 coding-review.tistory.com 이번 포스팅에선 Redis를 이용해 세션을 구현해보도록 하겠습니다. 설정이나 사용하는 방법에 대해서는 위의 포스팅을 참고해주시면 감사하겠습니다. 사실 Redis로 세션을 구현하는 것은 정말정말 간단합니다. 하지만 너무 간단하기 때문에 재미가 없습니다. 따라서 이번 포스팅에선 ..

Redis를 이용해 캐싱 구현하기 (with Spring)

저번 포스팅에선 Redis의 기본적인 개념에 대해서 알아봤습니다. Redis가 어떻게 NoSQL중에서 가장 빠른 성능을 보여줄 수 있었는지, 자료구조는 어떤 것을 지원하는지, 사용처는 어떤게 있는지, 배포방법까지 알아봤죠. 자세한 내용은 아래를 참고해주세요! https://coding-review.tistory.com/364 Redis의 기초적인 개념 다음 프로젝트를 기획하면서 Redis를 사용해봐야겠다는 생각을 하게 되었습니다. 기존 이론적으로 알고 있었던 내용으로는 Redis가 캐싱이나 세션 데이터 저장소로서 사용된다는 것은 알고 있었 coding-review.tistory.com 이번 포스팅에선 Redis를 이용해 캐싱을 구현해보도록 하겠습니다. 우선 결론부터 말씀드리자면 페이지 전체를 캐싱할 수는..

Redis의 기초적인 개념

다음 프로젝트를 기획하면서 Redis를 사용해봐야겠다는 생각을 하게 되었습니다. 기존 이론적으로 알고 있었던 내용으로는 Redis가 캐싱이나 세션 데이터 저장소로서 사용된다는 것은 알고 있었지만 실제 어떻게 사용하는지 그 이외의 사용처는 무엇이 있는지에 대해서 공부가 부족해 조금 알아보게 되었습니다. 이번 공부는 특별히 요즘 핫한 Open AI의 Chat GPT 3.5 버전을 이용해 공부를 진행했습니다. 하지만 어디까지나 생성형 대화 AI인만큼 정보가 정확한지에대한 더블체크를 진행했으니 정보의 신뢰성은 걱정하지 않으셔도 될 것 같습니다. 때문에 이번 포스팅의 출처에는 제가 정보를 얻은 출처가 아닌 더블체크에 사용된 출처가 기입될 예정이니 참고해주시면 감사하겠습니다. 또한, GPT를 이용해 얻은 정보들은 ..

면접 준비 : 뮤텍스와 세마포어

Q. 뮤텍스와 세마포어의 차이점에 대해서 설명해주세요. A. 뮤텍스는 Locking 매커니즘이고 세마포어는 Signaling 매커니즘입니다. 이 둘은 식당에 있는 화장실 예시로 설명할 수 있습니다. 이 화장실 예제에서 사람은 프로세스 혹은 스레드로, 화장실은 자원으로 묘사됩니다. 뮤텍스는 식당에 화장실이 한개이고 열쇠도 한개인 경우입니다. 화장실에 가고싶으면 열쇠를 획득해야하고 만약 이미 화장실에 사람이 있다면 열쇠를 획득할 때 까지 기다려야합니다. 세마포어는 화장실이 여러개이고 화장실 밖에 전광판이 있는 경우입니다. 만약 화장실이 세개라면 전광판에는 3이라는 숫자가 적혀있고 누군가 화장실에 들어가면 전광판의 숫자가 2로 줄어듭니다. 화장실에 들어간 사람이 화장실을 나온 경우 숫자는 다시 3으로 바뀌게 ..