IntroWebRTC는 CodeArena라는 팀 프로젝트를 진행하면서 처음 사용해보았던 기술입니다.그 때 당시 과제로 WebRTC 기술을 적용해야 하였고, 저희 팀이 선택한 서비스는 “화면 공유 스트리밍” 서비스 였습니다.해당 서비스에 대해 배포 환경 및 엔드포인트 구축은 제가 맡아 처리하게 되었습니다.또한 최근 직무 면접 컨설팅을 받는 도중 한 프로젝트에서 “WebRTC와 WebSocket을 둘 다 사용하였던데, 그 이유가 있나요? 하나의 기술로 나머지 서비스를 대체할 수 있지 않나요” 라는 질문에 제대로된 답변을 못한 것이 이번 포스팅을 통해 학습을 하는 큰 이유 중의 하나입니다.. 우선 WebRTC에 대해서 간단하게 짚고 넘어가려 합니다.WebRTC란?WebRTC는 Web Real-Time Comm..
Intro이 글을 쓰게 된 계기는 “지난 프로젝트에서 이 기술을 선택한 이유가 뭘까?”라는 의문에서 시작됩니다.저는 개발해본 적 없는 기능을 구현할 때 많은 레퍼런스를 참조해보곤 합니다. 또한 많은 기술들 중 한 개의 기술을 선택하게 되고, 그 기술에 대해 학습 후 실제 프로젝트에 적용했던 것 같습니다. 돌이켜보면 지난 프로젝트들에 대해 “왜 이러한 기술을 선택했냐?” 라는 질문에 자문자답을 해보면 “해당 기능에 대한 기술로 자주 언급되니까?” 정도에서 그쳤던 것 같습니다.조금만 생각해봐도 고려해야하는 사항으로 떠오르는 것들이 한 두가지가 아닌데 말이죠. 그래서 백엔드로서 기술을 선택할 때 어떤 것들을 고려해야 하나에 대한 체크리스트가 있으면 정말 좋을 것 같다라는 생각을 하게 되었고, 찾아보니 따로 깔..
Intro취준을 같이 하는 계명대학교 동문 한명에게로부터 코드트리를 추천 받아 3주차로 합류하게 되었습니다. (학교 별 대항전은 못참아!) 코드트리는 SSAFY에서 삼성 역량 테스트 B형 특강을 수강할 때 유료플랜을 받아 몇 번 문제를 푼 경험이 있는 플랫폼이였고, 그 때 당시에도 구성이 되게 좋았다고 생각했었습니다. 왜냐하면 백준, 프로그래머스처럼 분류 별 문제만 푸는 것이 아닌 학습 커리큘럼에 대해 체계적으로 잘 구성되어 있었기 때문이였죠. 현재 취업준비를 병행하면서 코딩테스트 준비를 하기 위해 무작정 백준, 프로그래머스 떠돌아다니며 문제만 풀고 있었는데, 이 기회에 제대로 된 커리큘럼을 통해 다시 한번 알고리즘 실력을 정리해보려 합니다! 3주차 학습 정리 우선 동문의 추천을 받아 [학습하기] 테마..
IntroSSAFY 2학기 공통프로젝트인 CodeArena 서비스 개발에 대한 회고를 하려합니다.회고를 하기엔 약간 늦은 감이 있지만 기억을 천천히 되짚어보며 전통적인 회고 방법론인 KPT를 기반으로 좋았던 점, 문제였거나 아쉬웠던 점, 개선 시도 등에 대해 정리하려합니다. 지금 생각해보니 SSAFY 내에서 첫 프로젝트였던만큼 배운 점이 정말 많지만 그만큼 기획부터 말썽이 잦았던 프로젝트였던 것 같아요. 이제 시작하겠습니다.팀 모집SSAFY 2학기는 자율적으로 팀을 구하는데요. 비전공을 최소한 2명 이상 포함 해야하기에 처음에는 MM이라는 소통 툴로 여러 명에게 러브콜을 날렸던 것 같네요. 전공반에서 3명과 함께 하기로 했고, 세 명 전부 백엔드 포지션 희망이였기 때문에 비전공에서 프론트 분들을 구하기엔..
문제https://www.acmicpc.net/problem/1967 풀이깊이 우선 탐색(DFS) 활용한 풀이접근법각 노드에서 순회(dfs)방문체크를 통해 한쪽 깊이로만 탐색더 이상 탐색이 불가능한 노드에 도착 시 최대값 비교 및 갱신문제에서 “트리에서 어떤 두 노드를 선택해서 양쪽으로 쫙 당길 때, 가장 길게 늘어나는 경우” 라는 문맥을 통해서 두 노드 사이를 순회하여 제일 높은 가중치를 구하면 되겠구나 라는 생각을 함. 해당 문제를 풀며 조금 생각이 필요했던 부분은 특정한 노드에서 부모노드로 순회를 하게되는 경우였음.이번에 접근한 방식으로는 클래스 배열을 활용하여 부모노드에 대해 기록을 한 뒤 순회를 하도록 구현하였음. (자세한 부분은 아래코드를 참조)소스코드import java.io.*;import..
프로젝트 환경 위와 같은 프로젝트 환경이 구축되어있고, Nginx를 통한 https 리버스 프록시를 구축하려는 상황에서 재미있는 논의 주제가 나와 포스팅을 남기게 되었습니다. 논의 주제Nginx를 컨테이너로 구동해야할까? EC2 호스트 위에서 구동해야할까?라는 주제로 SSAFY 구미캠 인프라 자타공인 포조님과 토론을 하게 되었습니다. 최초의 고민하게 된 부분은 포트의 노출 및 외부로의 접근을 허용할 시 보안 측면에서 좋지 않다라는 부분에서 논의가 시작되었습니다.사실 보안적인 부분에 대해서는 어떤 공격이 있는지, 어떤 대처를 해야하는지에 대해 깊게 공부해보지 못한 부분이다보니 토론내용이 잘 못 되었을 가능성은 높습니다. 하지만 아는 선에서 서로의 의견을 맞대어 보니 어느정도 정리된 부분이 있는 것 같아 유..
개요 실무 모니터링 환경을 구성을 하기 위해서는 다음과 같은 3단계를 구축해야합니다. 대시보드 애플리케이션 추적 로그 대시보드 전체를 한눈에 볼 수 있는 가장 높은 뷰라고 할 수 있습니다. 제품 마이크로미터, 프로메테우스, 그라파나 등등 모니터링 대상 시스템 메트릭(CPU, 메모리) 애플리케이션 메트릭(톰캣 쓰레드 풀, DB 커넥션 풀, 애플리케이션 호출 수) 비즈니스 메트릭(주문수, 취소수) 애플리케이션 추적 주로 각각의 HTTP 요청을 추적, 일부는 마이크로서비스 환경에서 분산 추적할 수 있습니다. 제품 핀포인트(오픈소스), 스카우트(오픈소스), 와탭(상용), 제니퍼(상용) https://github.com/pinpoint-apm/pinpoint GitHub - pinpoint-apm/pinpoint..
실무 모니터링 환경을 구축하기 위한 첫 번째 단계로 스프링부트에서 제공되는 액추에이터에 대해 학습한 내용을 정리하였습니다. 개요 운영 환경에서 서비스할 때 필요한 기능들을 프로덕션 준비 기능이라 합니다. 간단하게 알아보면 애플리케이션이 현재 살아있는지, 로그 정보는 정상 설정 되었는지, 커넥션 풀은 얼마나 사용되고 있는지 등을 확인할 수 있어야 합니다. 스프링부트에서 제공하는 액추에이터는 위와 같은 기능을 매우 편리하게 사용할 수 있는 다양한 편의 기능들을 제공합니다. 액추에이터 build.gradle 추가 //actuator 추가 implementation 'org.springframework.boot:spring-boot-starter-actuator' 의존성을 추가 후 아래 url로 접속해보면 몇 ..