분류 전체보기 441

[RabbitMQ] vhost에 대한 이해

vhost는 무엇일까? vhost 즉 virtual host는 메시징 시스템 내에서 논리적으로 분리된 파티션 또는 네임스페이스임 vhost는 사용자, exchange, queue 및 binding 등 RabbitMQ 리소스에 대한 독립적인 네임스페이스를 제공 다양한 프로젝트나 환경에서 동일한 RabbitMQ 인스턴스나 클러스터를 공유하면서 리소스 간 충돌이나 권한 문제를 방지함 왜 vhost를 사용해야할까? 리소스 논리적 분리 vhost는 RabbitMQ 서버에서 논리적 분리를 제공함 각 vhost는 독립된 네임스페이스에서 exchanage, queue, binding등의 리소스를 관리함 이 점이 여러 애플리케이션, 프로젝트, 또는 팀이 동일한 RabbitMQ 인스턴스를 공유하면서도 각자의 리소스를 분리..

[RabbitMQ] RabbitMQ vs Kafka 성능 비교 논문

RabbitMQ에 대해 학습하는 도중 RabbitMQ와 Kafka에 대해 비교한 흥미로운 논문을 발견했다. 학사 학위 논문으로 보이는 이 논문을 읽어보고 간략하게 정리해보았다. 메세지 브로커에 대한 깊은 난이도라기보다는 두 오픈소스간 성능 비교를 해본 논문이다. 꽤 재밌다. RabbitMQ vs Kafka에 대해 재밌게 읽을 수 있다. 커피마시면서 읽기에 딱 좋다. 논문 링크 https://www.diva-portal.org/smash/get/diva2:1674316/FULLTEXT01.pdf 내용 요약 분산 시스템, MSA 구조는 컴포넌트의 결합도를 낮추는 방향임 그래서 각 디바이스로 컴포넌트가 분산되있을때,시스템 내 컴포넌트 간 통신을 위해 MOM이 필요하다. 메세지 브로커는 MOM의 핵심이다. (M..

[AWS] AWS EBS에 대한 이해

RabbitMQ 클러스터링을 공부하던 중 AWS EBS에 대한 내용이 등장했다. 처음 들어본 기술 용어이므로 관련 내용을 간략하게 정리하고자 한다. EBS란 무엇인가? Elastic Block Storage는 AWS 클라우드의 EC2 인스턴스에 사용할 영구 블록 스토리지 볼륨을 제공함 각 EBS 볼륨은 가용 영역 내에 자동으로 복제되어서 구성 요소 장애로부터 보호하고 고가용성 및 내구성을 제공함 요약 가상 하드드라이브임 EC2 인스턴스가 종료되어도 계속유지 가능함 인스턴스랑은 별개의 개념이라고 보면 됨 인스턴스와 EBS는 네트워크로 연결로 되어있기 때문임 하나의 EC2 인스턴스에 여러 하드드라이브 즉 EBS를 계속 네트워크에 붙여서 추가시킬 수 있음 인스턴스 정지 후 재기동 가능함 하나의 EBS를 여러 ..

Cloud/AWS 2023.10.27

[RabbitMQ] RabbitMQ에 대한 이해

최근 RabbitMQ를 사용할 일이 있었다. 이해가 부족해서 중간에 잘못된 코드를 사용해서 문제가 발생했다. 이번 기회에 RabbitMQ란 무엇인지, 왜 쓰는지, 어디에 쓰는지 학습해보고 간략하게 정리해보고자 한다. 메세지 드리븐? 서비스 사이에 비동기적으로 메세지를 전달하는 방식이다. 그래서 서비스들은 느슨한 결합 -> decoupling 된 의존성을 가지게 된다. -> 부하 관리, 탄력적인 흐름 제어가 가능함 이 메세지 드리븐의 장점을 얻기 위해 메세지 미들웨어를 쓸 수 있다. -> 그래서 MQ를 쓸 수 있다. 그런데 카프카는? RabbitMQ는 큐 카프카는 로그 큐 선입 선출 메세지는 소비되면 큐에서 삭제됨 일시적인 메세지 보관 생산자, 소비자가 독립적 비동기적으로 존재할 수 있다. 큐잉, 버퍼 역..

[JS] JS/TS 그리고 웹에 대한 개인적인 생각

최근 회사에서 웹 프론트 작업을 하면서 JS/TS를 많이 사용했다. 학부에서 두 언어를 거의 써본 적 없었다. 책 한권을 읽고 기본적인 개념을 파악했는데 그것도 시간이 지나서 희미해졌다. 이후 회사에서 업무를 하면서 레거시 프로젝트에는 자바스크립트를, 새로운 프로젝트에는 타입스크립트를 사용했다. 두 언어를 사용하면서 들었던 개인적인 생각을 정리하고자 한다. 자바스크립트를 공부하다보면 신기한 개념을 많이 접한다. 클로저, 프로토타입, this 등 타 언어와 다른 개념이 있다. 때문에 언어가 실용성과는 별개로 어딘가 나사가 하나 빠진 듯한 느낌이 들곤 한다. 예상치 못한 동작이 언어에 포함되어있다. (물론 이마저도 익숙해질 수 있긴하다.) 타입이 없다는 단점을 보완하기 위해 타입스크립트를 사용하지만 자바스크..

Web/javascript 2023.10.20

[인터뷰] OpenAI CEO 샘 알트먼 인터뷰

최근 샘 알트먼의 인터뷰 영상을 보게 되었다. 많은 영감을 받았다. 이후 인터뷰를 찾아보고 관련 기사도 많이 찾아보았다. 몇 가지 포인트에서 변화할 수 있는 부분을 찾아냈고 찾아본 내용을 간략하게 정리해보고자 한다. 샘 알트먼은 누구인가? 현직 OpenAI CEO 1985년 4월 22일생 스탠퍼드 대학교에서 컴퓨터 과학 전공했지만 2005년 중퇴 대학교 중퇴 후 친구들과 위치 기반 소셜 네트워킹 회사인 Loopt를 설립 후 2012년 매각 2011년에 Y Combinator의 파트타임 파트너로 합류 후 2014년 대표가 됨 스타트업의 초기 펀딩에 참여해서 막대한 수입을 벌임 2015년 포브스가 선정한 30세 미만의 최고 투자자로 선정됨 2015년 12월 11일부터 일론 머스크와 함께 OpenAI를 창업 ..

[Dev] 질문에 대한 이야기

최근 질문을 하는 방법에 대한 고민을 하는 중이다. 어떤 질문이 좋은 질문일까. 무례하지 않으면서도 내가 원하는 걸 얻을 수 있는 질문 말이다. 요즘 그걸 고민 중이다. 포프님께서 질문에 대한 영상을 찍은 게 있어서 해당 내용과 내 개인적인 생각을 간추려봤다. 포프님: 너무 넓은 범위의 질문을 하는 건 지양하는 게 좋다. 가장 중요한건 이해가 안되는 포인트 하나를 이야기하는 것이다. 그렇게 하면 상대방이 더 구체적인 내용에 대해 이야기해줄 수 있다. 뜬금없이 질문할 때 보통 상대방은 다른 일을 하고 있는 상황이다. 의미없이 질문했다고 하더라도 상대방은 왜 내가 그런 질문을 했는지를 이해 못할 수 있다. 그래서 정확히 뭘 물어보는 지 몰라서 상대방이 시간을 많이 쓸 수도 있다. 상대방이 yes or no ..

개발 정보 2023.06.06

[Pope] 게임에 대한 이야기 - 포프TV

주말 아침에 심심해서 포프님 영상을 몇개 봤다. 오래된 영상들이 몇 개 있긴 하지만 꽤나 재밌는 내용이 많다. 정자세로 시청하기보다는 영상을 틀어놓고 딴 짓을 하는데, 팟캐스트처럼 켜두고 시간 날때 들으면 나름 재밌다. 아침에 켜둔 영상 중 게임과 관련된 영상들이 있어서 간단한 내용 정리를 해봤다. 게임 판매량 성공하는 게임? 현실에서 게임의 성공요소는 그저 운이다. 출시 당시의 트렌드 덕분에 게임이 성공할 수 있는 거다. 시장을 읽는 눈을 가진 사람은 거의 없다. 아무리 성공한 게임도 후속작도 성공하는 경우는 드물다. 게임이 나왔을 때 처음 6주 간의 매출액이 이후 게임이 평생 팔릴 매출액의 절반이다. 게임은 처음 6주가 정말 중요하다. 그래서 마케팅 하는 분들이 이 부분에 돈을 퍼붓는다. 처음 6주 ..

개발 유튜버 2023.05.20

[AWS] DynamoDB 제대로 알고 사용하기

최근 Amazon DynamoDB를 사용할 일이 많다. DynamoDB는 간단하다는 점이 좋았다. 그럼에도 잘 알고 사용해보고자 DynamoDB에 대한 간략한 내용을 정리해보고자 한다. DynamoDB란? AWS에서 제공하는 서버리스 기반 key value 기반 NoSQL데이터베이스다. 높은 성능과 비용적 이점이 있다고 한다. 특징 NoSQL 데이터베이스 NoSQL데이터베이스에는 JOIN이 없다. JOIN개념이 없기 때문에 정규화도 불가능하다. 그래서 NoSQL에서는 반정규화를 한다고 한다. 반정규화란? 데이터베이스의 성능 향상을 위해서 데이터 중복을 허용하고 조인을 줄이는 데이터베이스 성능 향상 방법이다. 반정규화는 조회(select) 속도를 향상시키지만 데이터 모델의 유연성은 낮아진다. 반정규화를 적..

Cloud/AWS 2023.05.06

[Tech] Cache invalidation이란 무엇일까?

오늘 인스타그램의 Scailing 아키텍쳐에 관한 영상을 보았다. 내용이 정말 좋다고 생각했는데 자주 등장하는 용어 중 낯선 용어가 있어 이에 대해 정리해보고자 한다. Cache invalidation 즉 캐쉬 무효화이다. 찾아보니 꽤나 도움되는 내용이 많은 개념이다. 왜 캐시가 등장했을까? 기술 발전으로 프로세스 속도는 증가했지만 메모리 속도가 이를 따라가지 못했다. 프로세서가 아무리 빨라도 메모리 처리 속도가 느리면 결과적으로 전체 시스템 속도가 느려진다. 이를 개선하기 위해 캐시가 나왔다. 캐시는 CPU 칩 안에 들어가는 작고 빠르고 비싼 메모리다. 프로세서가 매번 메인 메모리에 접근해서 데이터를 받아오면 시간이 오래 걸려서 자주 사용하는 데이터를 담아두고 해당 데이터가 필요할때 프로세스가 메인 메..

개발 정보 2023.05.05

[개발자의 자질] CTO의 역할

최근 EO에 올라온 영상 중 CTO에 관한 영상이 있었다. 꽤 재밌게 봤다. 문득 CTO는 어떤 일을 하는 사람인지 궁금해졌다. 기술 조직의 최고기술책임자는 어떤 일을 할까? CTO 공석인 스타트업들이 많다. 책임회피라고 볼 수 도 있다. 고객에게 진짜 가치를 줄 수 있다면 매출은 당연히 따라온다. Chief Technical Officer란 무엇일까? 기술 팀을 관리하고 회사의 전략과 기술의 전략이 잘 어울리도록 노력하는 사람이다. 회사와 기술팀이 성장함에 따라서 CTO의 역할도 함께 변해야 한다. 그렇지 않다면 서비스와 기술은 성장 정체기를 맞는다. 스타트업의 단계는 아래와 같다. 1. 암흑기 2. 성장기 3. 기술의 르네상스 4. 성숙기 암흑기 기술팀 규모 0~5명 재무적으로 어렵고 불확실성이 큰 ..

개발 정보 2023.04.30

[개발자의 자질] 존 카맥이 말하는 대체 불가능한 개발자가 되는 법

가장 존경하는 개발자를 물어본다면 존 카맥이라고 대답한다. 존 카맥의 영상을 자주 찾아보는 편이다. 너무 존경하는 개발자이기도 하고 세계적으로 인지도도 많아서 이 분의 말씀을 담은 자료들이 올라오는데 그때마다 꼭 챙겨본다. 이번에 꽤 좋은 자료가 올라왔는데 재밌게 볼 수 있는 영상이다. 해당 내용에 대한 간략한 요약과 개인적으로 느꼈던 점을 이야기해보고자 한다. 존 카맥은 어떤 사람일까? 본명 John D. Carmack은 이드 소프트웨어의 공동 창업자이자 기술 감독, 프로그래머이다. 1970년 8월 20일 미국 캔자스 출생이다. 1인칭 슈팅 게임 장르에서 전설적인 게임을 개발했다. 퀘이크콘 등 활발한 연설이나 인터뷰 활동을 펼쳤고 PC 게임 업계에서 스타 개발자이자 3D 그래픽 프로그래밍의 기술 Gur..

개발 정보 2023.04.29

[Tech] 인증과 인가에 대한 이해

인증, 인가에 대해서 간략하게 정리해보고자 한다. 내용이 꽤 많고 사용해본 지 시간이 꽤 흘러서 간단하게 정리해보겠다. 인증과 인가 시스템의 자원을 적절하고 유효한 사용자에게 전달하고 공개하는 방법이다. 인증은 Authentication 즉 로그인이다. 인가는 Authorization 즉 인증 작업 이후 행해지는 작업이다. 인증된 사용자에 대한 자원에 대한 접근 확인 절차를 의미한다. 유저는 관리자 페이지에 접속할 수 없다. 왜냐면 관리자 페이지에 인가되어 있지 않기 때문이다. 세션 기반 인증 세션 기반 인증은 쿠키와 세션과 관련된 내용이다. 세션 기반 인가는 사용자 인증 정보가 서버 세션 저장소에 저장된다. 사용자가 로그인하면 인증 정보를 서버 세션 저장소에 저장하고 사용자에게 저장된 세션 정보인 Se..

[Kotlin] 코틀린 기본기

최근 코틀린을 배워야할 일이 생겼다. 당장 쓸 건 아니지만 미리 알아둬야겠다는 생각이 들어서 간단하게 정리해보고자 한다. 코틀린은 Google I/O 2017에서 안드로이드의 공식언어로 채택되었다. 코틀린 장점 문법적으로 진보 서버 사이드 애플리케이션에 좋음 자바 완벽 호환 툴 지원 (Intellij) 러닝커브가 낫음 코틀린 지원 서버사이드 프레임워크 Spring Vert.x kotlinx.html 세미콜론 사용하지 않는다. val temp: int = 10 var temp = 15 val: 변할 수 없는 상수 (read only, 초기화해줘서 선언해야함) var: 일반적인 변수 fun sum(a: int, b: int): int { return a + b } 위 코드는 아래처럼 단순화 가능하다. fun..

Kotlin 2023.04.11

[Android] 간단한 Firebase push notification alarm 앱 만들기

최근 Firebase push notification을 테스트해볼 일이 생겨서 간단한 안드로이드 앱을 만든 뒤 해당 앱으로 정상적으로 push notification이 전달되는 지 확인해봐야할 일이 생겼다. 그냥 간단하게 만들고 싶어서 flutter 쪽을 살펴봤는데 (개인적인 견해이지만) flutter는 코드의 양이 생각보다 많다는 느낌이 들었다. 그리고 굉장히 익숙하지 않은 형태처럼 느껴졌다. 예시 코드를 찾아보다가 그냥 이럴 바에 kotlin이나 java로 안드로이드 앱을 간단하게 만드는 게 낫다고 생각했다. 순서는 간단하다. 아래 순서대로만 진행하면 된다. Firebase 콘솔에 접속해서 Firebase project를 만들어 준다. project내에서 Android app을 만들어주고 google..

[Airflow] Apache Airflow Test Case 작성하는 법

최근 Apache Airflow를 만질 일이 생겼다. 여러 Task 들을 작성하기는 했는데 테스트 코드를 어떻게 작성할 지에 대한 감도 잡히지 않았고 이걸 직접 다 돌려보는 풀테스트를 작성해야하나 긴가민가 했다. 그리고 짧은 조언을 받았는데 기본적인 테스트 코드들이 있었으면 좋겠다는 리뷰를 받았다. 그러니 앞으로는 테스트는 기본으로 가져가자는 마인드를 가져야겠다. 그래서 airflow 에 대해 간단한 Test Case를 작성하는 법을 알아보고자 한다. 우선 pytest를 사용할 것이기 때문에 pip install을 해주자. mock 테스트 안할 거면 후자는 빼줘도 되요~ pip3 install pytest pytest-mock 그리고 아래와 같은 dag와 task 들을 정의해줬다고 가정하자. from d..

[Convention] 협업 방식 정리(3) 애자일 + 스크럼 + 개발 프로세스 + 리더의 자질

신입 개발자로 일할 경우 사내에서 접하게 되는 개발 문화가 있다. 규모에 따라 다를 수 있겠지만 개발자로 일하는 경우 애자일 문화, 스프린트 방식, 코드 리뷰, 개발 프로세스에 대한 회사만의 특유한 문화를 접하게 된다. 그에 대한 간략한 내용을 정리하고자 한다. 스프린트 일일 스크럼 회의 짧게 회의한다. 15분 ~ 20분 정도, 팀원들이 보여서 어디까지 했고 어제 무얼 했으며 오늘 뭘 했고 어떤 점이 문제인지 이야기한다. 스프린트 원칙 스프린트 기간 중에 서비스의 우선 순위를 바꿔선 안된다. 요구 사항이 생기면 진행 중인 스프린트 내에서의 변경을 해서는 안된다. 스프린트도 갑자기 종료될 수 있는데 이때는 어찌할 수 없는 상황에서만 종료되어야 한다. 스프린트는 정해진 시간 안에 끝내고 연속적으로 진행되어야..

[Docker] OCI runtime exec failed: exec failed: unable to start container process: exec: "ping": executable file not found in $PATH: unknown

간만에 도커를 실습하는 와중에 아래와 같은 에러를 마주했다. OCI runtime exec failed: exec failed: unable to start container process: exec: "ping": executable file not found in $PATH: unknown 내가 하고자 하는 명령어는 아래와 같았다. docker exec mysql ping findby docker exec findby ping mysql 즉 findby라는 컨테이너와 mysql이라는 컨테이너 사이에서 서로에게 핑을 보냄으로써 정상적으로 컨테이너가 살아있는 지 확인하기 위함이었다. 물론 당연히 떴으니 살아있겠지만 그냥 확인차 ping은 잘 날라가는 지 보고 싶었다. 근데 왜 위 오류가 발생했을까? 위 ..

인프라/Docker 2023.02.18

[Docker] 협업 방식 정리(2) 가상화 + docker + dockerfile + docker compose + docker network + dockerhub

오늘은 docker, dockerfile, docker compose, docker network에 대해서 알아보기로 한다. 협업에서 혹은 신입 개발자로 일하게 된다면 반드시 docker 혹은 가상화 기술에 대해 알고 있어야 한다. 그냥 업무 숙달의 일환이라고 생각하고 간단하게 살펴보자. 도커 공식문서: https://docs.docker.com/get-started/overview/ 가상화 기술이란? https://velog.io/@palza4dev/Docker%EC%99%80-%EA%B0%80%EC%83%81%ED%99%94-%EA%B8%B0%EC%88%A0 https://spidyweb.tistory.com/71 https://nomad-programmer.tistory.com/282 가상화는 물리..

인프라/Docker 2023.02.16

[Git] 협업 방식 정리(1) git + gitflow + gitlab + 코드 리뷰 + code convention + PR Request + Merge Request + 개발 문화

협업을 제대로 해본 적이 없어서 협업 방식에 대해서 정리하고자 한다. 코드 리뷰도 제대로 해본 적이 없어서 협업 컨벤션이나 구체적인 루틴에 대한 이해가 필요할 것 같다. 간단하게 정리하고자 한다. https://backlog.com/git-tutorial/kr/ git 기본 명령어 정리 https://wecandev.tistory.com/152 인덱스(index): 커밋할 변경사항을 모아놓은 궁간임. 작업 폴더(work Tree)의 변경내용을 인덱스에 기록하는 것을 스테이지(Stage)라고 한다. 머지(Merge): 선택한 브랜치에 다른 브랜치에서 커밋한 내용을 병합하는 동작임. 컨플릭트(Conflict):동시에 같은 파일의 유사한 부분을 수정한 경우 발생하는 코드충돌을 의미하고 의도에 맞는 코드를 선택..

인프라/Git 2023.02.15

[백엔드 스터디] 7, 8주차 - JPA 연관관계 및 영속성 전이

이번주 주제는 JPA 연관관계 매핑과 영속성 전이입니다. 주제가 비교적 큰 범위로 선정되어 이번 7, 8주차를 기준으로 마무리된다. JPA에서는 아래 세 가지가 중요하다. 방향: 단방향, 양방향 (객체 참조) 연관 관계의 주인: 양방향일 때, 연관 관계에서의 관리의 주체 다중성: 다대일(N:1), 일대다(1:N), 다대다(N:N) 데이터베이스 테이블은 외래 키 하나로 양 쪽 테이블 조인이 가능함. 그러나 객체의 세계는 참조용 필드가 있는 객체만 다른 객체를 참조 가능함. 기본적으로 단방향 매핑으로 하고 나중에 꼭 필요할 때만 양방향을 추가해주면 된다. 연관 관계의 주인을 정하는 건 무엇일까? 두 단방향 관계 즉 (a -> b, b -> a) 에 대해서 제어의 권한 즉 외래 키를 비롯한 테이블 레코드를 저..

[CS스터디] CS스터디 방식 소개

CS 스터디 진행 방식에 설명드리겠습니다. 매주 토요일 13시에 시작합니다. 컴퓨터 네트워크 Chapter 1 컴퓨터와 네트워크 인터넷 1.1 인터넷이란 무엇인가? 1.2 네트워크의 가장자리 1.3 네트워크 코어 1.4 패킷 교환 네트워크에서의 지연, 손실과 처리율 1.5 프로토콜 계층과 서비스 모델 1.6 공격받는 네트워크 1.7 컴퓨터 네트워킹과 인터넷의 역사 1.8 요약 Chapter 2 애플리케이션 계층 2.1 네트워크 애플리케이션의 원리 2.2 웹과 HTTP 2.3 인터넷 전자메일 2.4 DNS: 인터넷의 디렉터리 서비스 2.5 P2P 파일 분배 2.6 비디오 스트리밍과 콘텐츠 분배 네트워크 2.7 소켓 프로그래밍: 네트워크 애플리케이션 생성 2.8 요약 Chapter 3 트랜스포트 계층 3.1..

[Computer Graphics] 3D 게임 프로그래밍 후기 with TheCherno

2022년에는 특히나 그래픽스 프로그래밍에 대해 관심갖고 지냈다. 특히 언리얼5 출시와 함께 많은 프로젝트가 발표되었는데 상당히 인상깊은 프로젝트들이 많았다. 국내에서 가장 유명했던 프로젝트를 꼽으라면 당연히 러셀 님이 진행하고 계신 Project RYU가 될 수 있겠다. 그 영상을 보고 정말 감명받았고 배우고 싶다는 생각이 들었다. 아래 프로젝트 RYU 영상을 링크로 걸어뒀다. 꽤나 긴 영상이지만 시간이 남는다면 꼭 보기 바란다. 언리얼로 이정도 수준까지 구현할 수 있다는 점이 정말 놀랍다. Project RYU 개인적으로 아쉬웠던 점은 우리 컴퓨터공학 학부는 그래픽스 강좌가 현재는 열리지 않는 상태이기 때문에 어떻게든 혼자서 공부하는 수밖에 없었다. 아마 강좌가 있었다면 해당 강좌를 수강하고 어떤 식..

Computer Graphics 2023.02.07
반응형