목록 KimJinHwan (34)
배경재밌는 일이 들어왔다. 회사의 카메라 기기를 외부 플랫폼에서 스트리밍 될 수 있도록 만들어야 했다. 회사에 DevOps가 따로 없다 보니 클라우드를 직접 만지고 비용을 관리한다. 특히나 우리 회사는 홈 카메라도 판매하기에 스트리밍을 위한 데이터 통신비가 얼마나 큰지 안다. WebRTC를 위한 모든 데이터가 서버를 거친다면, 그 속도도 문제지만 통신 비용도 클 것이다. 그래서 노드 간 직접 연결이 중요하다. 나는 여기가 재밌었다. 이 글 자체도 사실 이걸 얘기하고 싶었다.배포되지 않은 로컬 네트워크의 기기끼리 어떻게 서로를 찾아 직접 통신하는지 궁금했다. NAT 동작 과정P2P 통신의 원리를 이해하기 위해선, NAT의 동작 과정을 이해해야 한다.NAT 내부에서 외부에 요청을 보내면, NAT는 연결 정..
배경회사 레거시 서비스들의 배포, 인프라 관리가 많이 아쉬웠다. VM 여러 개에 Jar 파일을 직접 배포하는 식이었고, 로깅은 파일로 확인, 매트릭 모니터링, 배포 자동화는 전혀 안되어 있었다. 매트릭을 모니터링하기 시작했고, Loki와 CloudWatch로 로그를 수집, 검색할 수 있도록 하였다. 자잘한 개선들과 자동화를 꾸준히 만들어왔지만, 근본적인 문제들은 결국 개선되지 않고 있었다.// 기존 제약 사항1. 서비스가 다운되면 직접 확인하고, 배포해야 했다.2. 애플리케이션 리소스가 VM 타입에 제한적이었고, 서비스가 VM의 상태에 의존되었다.3. 헬스 체크와 이를 바탕으로한 라우팅 규칙 수정이 수동적이었다. 급한 프로젝트들을 어느 정도 정리하고 팀에 시간이 생겼다. 현재 운영 중인 인프라들을 개선하..
대규모 업데이트IoT 서비스를 운영하는 우리 회사는 외부 IoT 플랫폼 위에서 애플리케이션단을 개발해 왔다.재작년부터 플랫폼을 독자적으로 운영하기 위한 준비를 해왔고, 최근에 배포를 마쳤다.아예 플랫폼을 사 와 직접 운영하기로 한 것이다.신규 플랫폼 서버 로직에 문제가 있어 기기 순서가 뒤섞였던 상황그 문제를 수정, 배포하는 과정에서 서버 리소스 부족이 고객들에게 노출되었던 상황특정 앱에서 신규 플랫폼의 특정 기기 사용에 제한이 되는 상황 생각만큼 문제가 많았다.특히 회사 간 엮인 급한 이슈 거리들이 많아 밤도 많이 새웠다. 배포 후 2주일 정도 지난 지금, 여전히 바쁜 나날을 보내고 있다.그래도 커다란 이슈들은 어느 정도 잡히고 작은 이슈들만 남아 있는 상태이다. 지금까지의 업무 경험 중 가장 체력적..
방향오늘따라 친구들이랑 통화를 길게 했다.또 유독 삶의 방향에 대한 얘기를 많이 나눴다. 용관이랑은 우리가 당장 해야 하는 일들을,유진이랑은 개발자로서의 성장 방향과 고민을,영상이랑은 서로가 중요하게 생각하는 가치들을 나눴다. 최근에 바쁜 척하느라 나를 돌아보는 시간을 못 가졌던 것 같다.주변에서 중요하다고 하는 일들에, 나한테 중요한 일들을 놓치고 있는 기분이다. 나는 언제 행복한가. 내가 진짜 하고 싶은 건 뭐고, 어떤 삶을 원하는가.3년 전 작성했던 내가 꿈꾸는 프로그래머로서의 삶과 지금 내가 꿈꾸는 다음 방향을 비교해 보는 것도 재밌겠다. 여행나는 여행할 때 행복하다.가끔 사진첩을 넘기며 찍었던 사진을 쭉 훑는 게 취미이다.사람은 순간의 기억으로 평생을 산다는 말에 공감한다. - 하노이 펍에서 ..
파일업로드 속도 문제'FE -> BE -> S3' 으로 사진을 업로드하고 있는데, 큰 패킷 전달이 두번이다 보니 업로드 속도가 너무 느리다. S3 업로드가 아니라 애초에 사이즈가 큰 요청이 오가는 시간 자체가 느린 것을 부하 테스트로 확인했다. 1MB 파일, 100명의 동시 요청 테스트에서 단순히 서버에서 MultipartFile 로 첨부 파일을 응답 받는 것만으로 응답 평균 시간은 200ms 가 걸렸다. 클라이언트에서 직접 S3 업로드파일 전달에 필요한 비용을 낮추고 서버의 요청 처리 속도를 개선하기 위해 클라이언트에서 직접 S3에 사진을 업로드한다. 프론트엔드에서 백엔드 서버로 이미지 파일이 전송되는 비용을 아낄 수 있다. 허용된 path에, 허용된 용량만큼만 업로드 할 수 있도록 S3 Pre-si..
Simple-auth 이번에 만든 simple-auth는 Spring 환경에서 사용자 토큰 인증, 재발급 처리를 돕는 라이브러리이다. Spring에서 제작하여 사용자 측의 간단한 빈 설정만으로 관련 빈 들이 자동 등록되어 바로 사용할 수 있도록 하고, Jitpack 으로 배포하여 gradle, maven에서 쉽게 의존성으로 추가 할 수 있도록 하였다. - 핸들러에 어노테이션을 붙이는 것으로 인증이 필요한 api 를 간단히 구분할 수 있다.- JWT 토큰을 인증하고 필요시 refresh 토큰으로 재발급한다. - 토큰의 Payload를 직접 정의하고, 핸들러에서 argument로 받을 수 있다.- Refresh 토큰을 만료시킬 수 있다. 이 글에선 왜 이 라이브러리 제작이 필요했는지, 사용 예시와 개발에서 ..
퇴사퇴사했다. 배울 수 있는 환경이었고, 존경할 수 있는 팀원들과 사수가 있었고, 성장할 수 있고 자부심을 느낄 수 있는 업무를 맡았었다. 회사 생활이 한없이 좋은 추억이었다고 얘기하면 얼마나 많은 사람들이 공감해 줄지 모르겠지만, 나는 그랬다. 개발적인 성장도 성장인데 생활을 배웠던 게 더 큰 것 같다. 옆 팀과 대화는 어떻게 해야 하고, 팀원들과 기술을 공유할 때는 어떻게 해야 하고, 실수했을 때 어떻게 대처해야 하고, 개발자가 아닌 직장인으로써 더 좋은 팀원이 되기 위해 어떤 노력들이 필요했는지를 배웠다. 출퇴근 시간의 강남역, 역삼역 가는 전철은 다시 생각해도 끔찍하다. 새치기도, 만차에 꾸역꾸역 밀고 들어오는 사람들도 참을 수 있었지만, 그런 것들보다 다들 예민하고 지쳐 찡그리고 있는 표정들이..
2023.04.27 / 책임의 설렘회사 안드로이드 팀은 배포 자동화가 안되어 있었고 이번에 내 태스크로 안드로이드 팀 CI/CD 를 주셨다. 이 정도 규모의 일에, 다른 팀과 협업하고 리드해야 하는 일에 티켓 메인 assignee로 내 이름이 올라간 건 처음이었던 것 같다. 팀 리더 분들과 미팅하고 작업자로 내 이름이 불려졌을 때 너무 설렜다. 엄청 무서웠지만 또 엄청 기뻤다. 항상 레거시를 욕해왔다. 답답하고 와닿지 않고, 잘 읽히지 않는 구조나 코드가 마음에 안들었다. 아예 기반 작업이 없이 작업하면 편할 줄 알았는데 레거시가 없는 상태로 구조를 고민하고, 사용 시나리오를 고민하고. 정말 차라리 레거시의 딱 명확한 기반이나 흐름이 그리웠다. 사소한 것부터 큰 구조까지 고민을 정말 열심히 한 것 같..