본문 바로가기

EngleBee 프로젝트

(8)
[study] WebRTC를 이용한 실시간 데이터 교환 WebRTCWebRTC는 시그널링을 통해 NAT 우회과정을 거쳐 데이터를 교환할 수 있습니다.WebRTC는 서버와 같은 중간자를 거치지 않고 브라우저간을 P2P로 연결하는 기술입니다. 중간 서버를 거치지 않기 때문에 빠른 속도가 보장되며, HTTPS가 강제 되기 때문에 중간자 공격에 대한 보안이 보장됩니다.  P2P 절차각 피어간의 P2P 연결을 위해 먼저 각 피어간의 P2P 통신에 동의해야 합니다. 그리고 서로의 주소를 공유하고 각 피어간의 보안 사항 및 방화벽을 우회합니다. 이 과정을 거쳐 데이터 교환을 실시간으로 하게 됩니다. WebRTC는 통신 초기 설정에서 중재자가 서로의 주소를 공유하여 보안 사항들을 우회하는 과정이 필요합니다. 방화벽과 NAT 트래버셜일반적인 컴퓨터에는 공인 IP가 할당되어 ..
[study] spring과 웹소켓 웹소켓 언제쓰지?사용자들끼리 실시간으로 정보를 공유해야 할 때 사용됩니다. 전이중 통신을 이용해서 실시간성을 보장합니다.게임, 채팅, 실시간 주식 거래 사이트 등등에서 사용됩니다. 웹소켓 vs HTTPHTTP에서도 실시간성을 보장할 수 있을까? HTTP에서도 실시간성을 보장하는 기법이 존재합니다. Polling, Long Polling, Streaming이 있습니다. 그럼에도 웹소켓이 사용한 환경이라면, HTTP를 이용한 기술보다도 웹소켓을 사용합니다.HTTP와 웹소켓의 가장 큰 차이점은 수립된 연결을 어떻게 하느냐 입니다. HTTP는 비 연결성 프로토콜입니다. 클라이언트가 요청을 보낼때마다 응답을 받고 연결을 끊어버립니다. 웹소켓의 경우에는 한번 연결을 맺은 뒤 유지됩니다. 한 쪽이 연결을 끊으라는 요..
[study] CI/CD 파이프라인 구축 CI/CD 파이프라인이란개발 환경의 코드가 테스트, 스테이징, 최종적으로 사용자에게 전달되는 다양한 단계를 거치는 프로세스입니다.한 단계가 성공적으로 완료되면 다음 단계가 자동으로 트리거되어야 합니다. 어떤 단계가 실패하면 문제 해결을 위해 빠르게 피드백되어야 합니다.   빌드 파이프라인 단계1. 메인 브랜치에 커밋하는 것으로 시작합니다. 결과는 일반적으로 대시보드에 표시됩니다.빌드 혹은 테스트 실패시 파이프라인이 중단되게 설계할 수 있습니다. 수정사항이 커밋되면 파이프라인이 자동으로 처음부터 재시됩니다. 또는 조사를 위한 실패를 플래그로 표시하고 파이프라인이 계속 진행되도록 구성할 수도 있습니다. 2. 각 테스트를 거친 후 피드백을 제공합니다. 테스트는 일반적으로 빠른 테스트부터 진행함으로 빠른 피드백..
[study] JPA 연관관계 맵핑 주인 연관관계 주인이 필요한 이유객체 지향의 패러다임과 DB의 페러다임의 차이가 있습니다. DB의 양방향과 단방향DB에는 양반향, 단방향 개념이 없습니다.외래키(FK) 하나면 양쪽의 관계를 알 수 있습니다. 객체의 단방향Member 엔티티는 Team 엔티티 클래스를 필드로 갖고 있습니다.Member 엔티티는 Team 엔티티의 모든 필드를 조회할 수 있습니다.Team 엔티티는 Member 엔티티의 필드를 조회할 수 없습니다. 객체의 양방향Member 엔티티는 Team 엔티티의 클래스를 필드로 갖고 있습니다.Team 엔티티는 여러 Member를 하나의 팀으로 속할 수 있습니다. 그래서 Member 타입을 갖는  List를 필드로 갖고 있습니다두 엔티티가 서로 참조용 필드를 갖고 있기 때문에 양쪽에서 필요한 모든 ..
[study] github 프로젝트와 마일스톤 그리고 이슈 Issue새로운 기능, 개선 필요한 기능, 버그 개선 등등 모든 것이 Issue입니다.모든 활동 내역을 Issue로 등록하고, 그 Issue를 기반으로 작업을 진행합니다.하나의 기능을 위해서 branch를 생성하듯이, 그 branch의 생성목적이 Issue가 됩니다. ex) 회원가입이 필요해?회원가입 이슈 발행 및 등록하고, 해결하기 위한 회원가입 branch를 생성합니다. Milestone내 프로젝트가 A>B>C>D 과정을 거쳐 만들어져야 한다면 A,B,C,D Milestone을 만듭니다.한 Milestone에는 여러 Issue를 등록할 수 있습니다. Label해당 Issue가 어떤 특성을 갖고 있는지, 어떤 상태인지를 파악할 수 있습니다.ex)서버 작업인지, 클라이언트 작업인지중요도기능 개선인지, 기..
[트러블슈팅] 수업 생성 로그 테이블 생성 선생님은 수업을 생성해서 학생과 1대1 화상채팅을 진행합니다.admin 페이지에서 하루에 수업이 몇개 생성되었는지 확인하기 위한 그래프를 그리려고 합니다.기존에 있던 Lecture 테이블에서 count하는게 나을지, 아니면 수업 생성 로그 테이블을 만들어서 거기서 정보를 가져오는게 나을지 알아보려고 합니다. 1. 기존 Lecture 테이블에서 수업 수를 계산하는 방법장점:간단한 구조: 추가 테이블을 만들 필요가 없어 데이터베이스 구조가 단순해집니다.관리 용이: 추가 테이블을 관리할 필요가 없어 유지보수가 더 쉬워집니다.실시간 데이터: 수업 수가 실시간으로 정확하게 반영됩니다.단점:성능 문제: 시간이 지남에 따라 Lecture 테이블의 데이터가 많아지면, 이를 직접 조회하여 수업 수를 계산하는 과정이 성능..
[Study] WebRTC : NAT, ICE, STUN, TURN에 대하여 NAT(Network Address Translation)기기는 고유의 이름으로 IP를 갖습니다. IP는 고정IP, 유동 IP가 있습니다. 그래서 실제로 고유하게 갖고 있는 IP주소인지 알 수 없습니다.그리고 내부망은 private IP이기 때문에 다른 네트워크와 통신이 되지 않습니다.NAT을 통하여 private IP에서 외부와 통신할 수 있는 public ip로 변환할 수 있습니다.public ip는 NAT에 의해 요청을 보낼때마다 바뀌기 때문에 public ip로 통신할 수 없는 문제가 발생합니다.STUN과 TRUN 서버를 이용하여 pee간의 통신을 가능하게 합니다. ICE(Interactive Connectivity Establishment)두 단말이 서로 통신할 수 있는 최적의 경로를 찾는 프레..
[트러블슈팅] 프로젝트 구조 계층형 구조 vs 도메인형 구조 - 계층형 구조와 도메인형 구조 프로젝트 구조중 하나를 선택해야 했습니다. 계층형 구조- Controller -Student -Teacher -Admin -Service -Student -Teacher -Admin -Repository -Student -Teacher -Admin 장점-  패키지 구조만 봐도 전체적인 구조를 보기 편합니다.- 계층별 응집도가 올라갑니다.단점- 규모가 커지면 여러 목적의 클래스들이 모여서 구별하기 힘듭니다.- 도메인별 응집도가 낮습니다. 도메인형 구조Student -controller -Service -RepositoryTeacher -Controller -Service -RepositoryAdmin -Controll..