본문 바로가기

전체 글75

통화/녹음 기능 설계 및 구현하기 (feat. 링링) 링링의 통화 서비스를 어떻게 구현했는지, 어떤 고민 포인트와 문제점이 있었는지 해당 포스팅에서 자세히 정리해 보겠습니다. https://www.youtube.com/watch?v=-BtcV6QCczY 통화 기능을 구현하려고 하시는 분이면, 해당 포스팅을 보기 전에 해당 발표 영상을 보면 좋을 것 같습니다. 해당 포스팅에서는 통화 기법/종류에 대한 설명을 하지 않고, 링링 프로젝트에 관련된 글들을 작성하려고 합니다.P2P (통화 구현 방식)일반적으로 현대의 많은 통화 서비스들은 SFU 구조를 가지고 있지만, 링링은 SFU가 아닌 P2P 구조를 선택했습니다. 링링의 핵심은 1:1 전화통화이기에 나중에 기능을 확장해도 그룹전화 쪽으로 확장하는 게 아닌, 영어 교육 관점의 기능으로 확장할 생각이라, 클라이언트들.. 2026. 8. 18.
회복탄력성 최근 들어 잦은 실패와 좌절의 순간을 겪었다. 이 과정에서 스스로의 회복탄력성을 재점검하고, 회복탄력성에 대해 더 공부를 하고 싶은 마음이 들어 과거 Youthcon'25 컨퍼런스 발표 준비 때 구매한 회복탄력성 책을 다시 읽으며 정리를 했다. 회복탄력성이란?자신에게 닥치는 온갖 역경과 어려움을 오히려 도약의 발판으로 삼는 힘 회복탄력성은 크게 두 가지 요소로 이루어져 있음. 1) 자기조절능력 2) 대인관계능력 그리고 이번 포스팅에 대해서는 자기조절능력에 대해 알아봅시다 자기조절능력자기조절능력은 스스로의 감정을 인식하고 조절하는 능력이다. 어려운 상황이 닥쳤을 때- 스스로의 부정적 감정을 통제하고 긍정적 감정과 건강한 도전의식을 불러일으키며- 기분에 휩쓸리는 충동적 반응을 억제하고- 자신이 처한 상황을 .. 2026. 8. 16.
통화 내용 분석 기능 구현 및 설계 (feat. 링링) 통화 분석 기능 구현 아키텍처는 다음과 같습니다. 하나씩 설명해 볼게요. 1. 외부 Lambda 사용 서비스 특성상, 최대 20분의 통화를 지속할 수 있습니다. 녹음 파일 하나의 용량은 약 10MB입니다. 그리고 하나의 통화를 분석함에 있어서 두 개의 음성 파일 (본인, 상대방)이 필요하기에, 서버에서는 하나의 분석을 위해 최소 20MB의 용량이 필요합니다. 링링은 자정에 무료 피드백 분석 쿠폰을 주기 때문에, 해당 시간대에 동시 피드백 분석이 몰릴 수 있다고 생각했고, 조금만 요청이 몰려도 바로 OOM 발생하기 때문에 서버 내에서는 분석이 불가능하다 판단하였고 외부 아키텍처(Lambda+ SQS)로 분리했습니다. Lambda는 별도의 독립된 서버를 보장해 주기 때문에 동시에 요청이 몰려도 OOM이.. 2026. 7. 24.
Claude로 서비스 A-Z 만들어보기 (최종 회고) 서비스 소개 우선 결과물부터 보여드리겠습니다! 앱스토어https://apps.apple.com/kr/app/%EB%A7%81%EB%A7%81-%EC%98%81%EC%96%B4-%ED%9A%8C%ED%99%94-%EB%A7%A4%EC%B9%AD/id6766043927 링링: 영어 회화 매칭 앱 - App StoreApp Store에서 Sungwoo Lee의 링링: 영어 회화 매칭 앱을 다운로드하십시오. 스크린샷, 평가 및 리뷰, 사용자 팁 및 링링: 영어 회화 매칭 앱과 비슷한 다른 앱을 볼 수 있습니다.apps.apple.com 플레이스토어는 심사가 오래 걸리네요ㅜㅜ (사실 플레이스토어 출시 때문에 정식 출시가 계속 미뤄지고 있습니다ㅜㅜ...) 제가 만든 서비스는 1:1 영어 회화 매칭 서비스입니다. 만.. 2026. 7. 21.
Websocket과 ALB max idle timeout 문제 상황: 운영 서버에서 계속 59초에서 전화가 끊김 ALB max idle timeout의 기본값은 60초. 그래서 60초가 넘어가면 연결이 끊기는 문제였음. 서버는 Signaling 서버, Client는 P2P 연결. 그래서 실제 음성 패킷은 시그널링 서버를 거치지 않음.ALB 입장에서는 Signaling 서버의 커넥션에 패킷이 흐르지 않으니 죽은 연결이고, 연결을 끊어야 된다고 판단. Tomcat에서의 기본 Websocket Session idle timeout은 무제한으로 설정되어 있음. 하지만 ALB의 max idle timeout이 60초로 설정되어 있어 연결 종료가 발생함.해결방안 1) ALB max idle timeout 조절 - ALB의 max idle timeout 최대 값은 4,0.. 2026. 6. 21.
Claude로 서비스 A-Z 만들어보기 (2,3 주차 회고: MVP 개발) 최근에 진짜 너어무 바빠서 이제야 회고를 씁니다ㅜㅜ 2~3주 차 회고를 한 번에 진행합니다!개발 근황 및 느낀점MVP를 개발했습니다. 우선 서비스를 간단하게 소개해보자면, 1:1 음성 영어 통화 서비스입니다. 약 2주 정도의 기간 동안 통화 서비스를 개발했어요. 웹이 아닌 IOS, Android 타깃의 서비스입니다. Native는 아니고, 웹 앱 + 일부 Natvie 기능을 섞었어요. 기능 자체가 상당히 복잡했습니다. 예를 들면 음... 통화 도중에 홈 화면으로 이동하면 전화가 안 끊겨야 하고, 네트워크가 끊겼을 때는 통화를 바로 종료해야 하나? 그렇지 않다면 몇 초 동안 사용자가 들어오지 않으면 연결을 종료해야 하나?? 등의 많은 고민 포인트가 있었습니다. 물론 프런트 코드는 제가 작성하지 않았습니다.. 2026. 5. 16.