전체 글

전체 글

    WebRTC 내용 정리

    기존의 p2p방식은 Dirty P2P -> 너무 무거움 클라이언트들이 서버 없이, 클라이언트들끼리 연결되어 통신 -> 다른 클라이언트에 대한 정보 다 가지고 있어야 한다. Client-Server : 중앙집중화된 역할 하는 서버 존재. 내가 채팅 친 것을 다른 애들한테 전달하는 걸 서버에 위임 p2p의 다른 형태를 가져가서 만든 것이 블록체인 p2p방식을 기반으로 생성된 체인 형태의 연결고리 기반 분산 데이터 저장 환경에 저장하여 누구라도 임의로 수정할 수 없고 누구나 변경의 결과를 열람할 수 있는 분산 컴퓨팅 기술 기반의 원장 관리 기술임 지속적으로 변경되는 데이터를 모든 참여 노드에 기록한 변경 리스트. 분산 노드의 운영자에 의한 임의 조작이 불가능하도록 고안됨 누군가가 결제를 만들고 블록체인은 이 ..

    HTTP2 정리 내용

    HTTP1.1 의 문제점 Http는 처음에 text, html만 실어나를 것 생각하고 만들어졌다. 하지만 방향 바뀌면서 오리지널 설계가 담지 못하는 부분 생겼다. 3.5세대 이동통신과 스마트폰이 전세계 인터넷의 폭발적 성장을 이끌었다. HoL(Head of Line) 줄의 머리가 통과하지 못하면 뒤에서도 통과하지 못한다. 첫번째에 대한 응답 만들지 못하면 뒤의 응답들이 다 만들어져도 못나가고 기다리고 있어야 한다. Fat Message Header http 1.1은 사람이 읽을 수 있게 되어있어서 헤더에 많은 메타 정보를 저장햇는데 앞에 있는 정보와 뒤에 있는 정보가 독립적이라 앞에 많은 것 보냈으면 뒤에도 많은 것 보내야 한다. ⇒ 중복된 Header 값 전송 (domain sharding이란 여러 개..

    gRPC 공부 내용 정리

    들어가기 앞서 gRPC를 spring boot를 이용해서 4가지 방식에 대한 실습 git repo https://github.com/Eeap/Springboot-with-gRPC gRPC 기존 함수 호출 방법 종류 정적 링킹 - 실행 파일 생성시 필요한 라이브러리를 포함하여 생성하는 링킹 방식 동적 링킹 실행 파일 안에 라이브러리 코드 X, 하나의 메모리 공간에 매핑 후 여러 프로그램에서 공유하여 사용 필요한 함수 호출하면 필요한 모듈을 메모리 상으로 불러와서 실행 원격 함수 호출(RPC) 함수 호출했을 때 호출된 함수의 실행이 통신을 타고 원격지에 있는 컴퓨터에서 실행(분산 네트워크 환경) 컴퓨터를 연결하는 RPC 프로토콜이 필요 필요한것 - IDL : 원격지와의 연결 지원. 서로 다른 컴퓨터의 정보를..

    Apache2와 내장 톰캣 연동 with springboot

    처음에 ip(특정 포트 지정!)로 하다가 도메인으로 하다보니 내장 톰캣이 떠있는 8000번 포트가 아니라 http는 80번 포트 https는 443번 포트로 연결되다 보니 어떻게 할까 고민하다가 apache를 띄우고 apache를 내 내장 톰캣에 연동할 수 있는 방법을 찾았다..! 먼저 sudo apt-get install을 통해 apache2와 mod_jk를 다운 받았고 sudo systemctl start apache2.service 를 통해 서버를 켜서 내 도메인으로 연결되었을때 디폴트 index.html이 잘뜨는지 확인한 다음 아래와 같은 설정들을 해줬다! (아래는 추가한 부분입니다) sudo vi /etc/apache2/apache2.conf LoadModule proxy_module /usr/..

    springboot + Mysql with AWS Lightsail

    공식 문서에서 설명하는 lightsail에 내용에서는 아래와 같이 설명하고 있어요! Amazon Lightsail은 웹 사이트 또는 웹 애플리케이션을 구축해야 하는 개발자가 Amazon Web Services(AWS)를 시작하는 가장 쉬운 방법입니다. 이를 통해 인스턴스(가상 프라이빗 서버), 컨테이너 서비스, 관리형 데이터베이스, 콘텐츠 전송 네트워크(CDN) 배포, 로드 밸런서, SSD 기반 블록 스토리지, 고정 IP 주소, 등록된 도메인의 DNS 관리, 리소스 스냅샷(백업) 등 프로젝트를 신속하게 시작하는 데 필요한 모든 것을 저렴하고 예측 가능한 요금으로 사용할 수 있습니다. 기존의 ec2만 써봤는데 Lightsail관련 세션을 몇번 듣고 호기심이 생겨서 이번 기회에 써봤는데 설정? 같은 부분들이..

    docker-machine with AWS EC2 driver

    m1 mac 환경에서는 현재 virtualbox가 지원이 안돼서 docker-machine driver에 aws ec2가 있길래 이걸 이용해서 docker swarm 실습을 진행해봤다! access_key와 secret_key는 본인의 key를 적어주면 됩니다 (저는 aws IAM에서 AmazonEC2FullAccess 라는 권한을 추가해준 사용자로 했어요) docker-machine create --driver amazonec2 --amazonec2-access-key {access_key} --amazonec2-secret-key {secret_key} --amazonec2-open-port 8000 --amazonec2-region ap-northeast-2 manager manager 뿐만 아니라..

    HTTP2 특징 정리 및 springboot로 테스트하기

    HTTP 1.1 의 전형적인 문제들 RTT 시간 증가 → http1.1의 하나의 커넥션당 하나의 요청을 처리하므로 tcp 3-way handshaking이 매번 커넥션 요청을 할때마다 일어남 이건 불필요한 RTT 시간을 증가시킴(syn를 보내고 syn ack를 받는 왕복 시간) Client-driven transmission → 클라이언트가 요청하지 않으면 서버는 클라이언트로 쪽으로 정보를 전달하지 못함 Fat message headers → 헤더에는 수많은 메타 정보가 들어감. 매 요청 시마다 엄청난 양의 헤더를 전송해야하며 중복된 정보가 전송될 수도 있음 Head of line blocking → 하나의 커넥션당 하나의 요청을 극복하기 위해 pipelining 기법을 도입해서 순차적으로 여러 개의 요..

    Kafka consumer API

    컨슈머 API package com.example.kafkastudy.consumer; import org.apache.kafka.clients.consumer.ConsumerConfig; import org.apache.kafka.clients.consumer.ConsumerRecord; import org.apache.kafka.clients.consumer.ConsumerRecords; import org.apache.kafka.clients.consumer.KafkaConsumer; import org.apache.kafka.common.serialization.StringDeserializer; import org.slf4j.Logger; import org.slf4j.LoggerFactory;..

    kafka producer API

    카프카 클라이언트 카프카 클라이언트 라이브러리를 사용하면 프로듀서 컨슈머 어드민 클라이언트로 카프카 클러스터에 명령을 내리거나 데이터를 송수신할 수 있다. 프로듀서 API 프로듀서 어플리케이션은 카프카에 필요한 데이터를 선언하고 브로커의 특정 토픽의 파티션에 직접 전송(직접 통신)한다. 프로듀서는 데이터를 직렬화하여 카프카 브로커로 보내기 때문에 자바에서 선언 가능한 모든 형태를 브로커로 전송할 수 있다. 💡 여기서 직렬화란 자바 또는 외부 시스템에서 사용 가능하도록 바이트 형태로 데이터를 변환하는 기술을 말한다. 인텔리제이에서 개발하기 위해선 일단 카프카 클라이언트 라이브러리를 gradle에 추가해야한다. plugins { id 'org.springframework.boot' version '2.7.3..

    Python 15686번 치킨 배달

    https://www.acmicpc.net/problem/15686 문제에서는 최대 m개의 치킨집이 있을 경우 치킨 거리의 최소합을 구하라고 했다. 먼저 치킨집이랑 사람집을 따로 리스트를 만들어서 보관했고 그 이후 dfs 방식을 이용해서 문제에 접근했다. cnt 즉 고른 치킨집의 개수가 최대 치킨집의 개수와 일치하면 계산을 시작했고 계산한 결과값을 result라는 리스트에 넣어줬다. (처음에 result에 5001이라는 값을 넣어준 이유는 아래 resMin 처음 실행될때 빈 리스트일 경우 에러가 날 수도 있기 때문에 100*100을 확실하게 넣어주는게 맞긴 한데 최대가 5001을 초과할 일이 없어서 잘됐네요 ㅎ,,) 처음에 m개의 치킨집 개수를 loc라는 list에 append나 pop을 이용하려 했는데..