본문 바로가기

분류 전체보기42

AWS MediaConvert의 userMetadata 개수 제한 1. MediaConvet란?MediaConvert는 AWS에서 제공하는 동영상 가공 서비스라고 보면 된다.지금 운영하고 있는 서비스에서 ABR 스트리밍을 하기 위해 mp4 포맷을 HLS 포맷으로 변환하는 과정이 필요해 사용 중이다.2. 현재 아키텍처 사용자는 동영상을 업로드하기 위해 업로드 서버의 API를 호출한다.업로드 서버는 MediaConvert에 동영상 변환 작업을 요청한다.MediaConvert의 작업이 완료되면 EventBridge가 이를 감지해 Lambda 함수를 실행한다.Lambda 함수는 전달된 정보를 보고 API 서버의 적절한 API를 호출한다.  위 아키텍처에서 업로드 서버부터 API 서버까지 정보를 전달해야 한다.이를 위해 MediaConvert에 작업을 요청할 때 userMeta.. 2024. 12. 6.
GitHub 학생 인증하고 DataDog 무료로 쓰기 0. 들어가며 올해 7월에 있었던 Google I/O Extended 컨퍼런스에서 DataDog에 대한 세션을 듣게 되었다.사용자 행동을 시각화해주는 등 좋은 기능이 많고 현업에서도 많이 사용되지만 그만큼 비싸다고 한다.세션 마지막에 학생은 무료로 사용할 수 있다는 걸 알게 되어 직접 시도해 보았다. 1. 깃허브 학생 인증 마지막 학기라 아직은 학생 신분이지만, 얼마 전 깃허브 학생 인증이 만료되어 다시 학생 인증부터 시작하였다. https://white63ser.tistory.com/6 [GitHub] 대학생 Pro 플랜으로 무료로 업그레이드 하기 (뱃지 증정)깃허브 Pro 플랜 깃허브에도 플랜이 따로 있습니다 계정을 생성하면 기본으로 Free 플랜을 사용하게 되는데요 한 달에 4$를 결제하면 Pro.. 2024. 12. 5.
[HackerRank] Forming a Magic Square 0. 들어가며급하게 코딩테스트가 잡혀서 알고리즘 재활 훈련을 하고 있다.풀면서 뿌듯했던 문제가 있어 포스팅한다.1. 문제Forming a Magic Square | HackerRank Forming a Magic Square | HackerRankFind the minimum cost of converting a 3 by 3 matrix into a magic square.www.hackerrank.com문제를 간단하게 요약하자면 아래와 같다.1~9까지의 숫자를 하나씩만 사용하여 가로(3) 세로(3) 대각선(2) 총 8개의 모든 합이 같은 사각형을 magic square라고 부름입력으로 주어진 사각형에서 magic square를 만드는 최소 비용을 구하는 문제2. 풀이 과정처음 문제를 읽었을 때는 굉장히.. 2024. 11. 28.
[SoMa] SW마에스트로 회고 0. 회고를 시작하며4월부터 11월까지, 길고도 길었던 소마가 끝났다.나의 2024년 메인 활동이었던 만큼 어떻게 지냈는지 되돌아보려고 한다.1. 무엇을 했는가?4월 ~ 6월까지의 기록은 상반기 회고에 적어두었다. 2024년 상반기 회고0. 회고를 시작하며2024년도 벌써 절반이 지나갔다.올해는 6개월이라는 시간이 빠르게 지나간 느낌이 든다.특히 프로젝트 일정이 한 번에 2~3개 겹치는 일이 많아 정신없는 순간이 많았다. 6개gemstoneyang.tistory.com이 시기에는 주로 서비스 기획, MVP 서비스 등 우리 팀의 프로젝트 방향성을 잡기 위한 시간들이 주가 되었다. 7월부터는 본격적인 서비스 개발에 들어갔다.우리 팀은 사용자에게 서비스를 빨리 제공하는 것이 1순위 목표였기 때문에 웹 페이지로.. 2024. 11. 27.
[SoMa] 스프린트5 개인 회고 0. 회고를 시작하며소마에서의 다섯 번째 스프린트가 끝났다.5월부터 기획 및 PoC만을 해오던 우리가 본격적인 개발에 들어간 첫 스프린트였다. 첫 개발 시작이었던 만큼 초기 세팅이나 논의해야 할 내용이 많아 쉽지 않은 시간이었다.이 기간동안 어떤 일이 있었는지 돌아보기 위해 회고를 작성한다.1. 스프린트 목표이번 스프린트는 oopy로 호스팅되고 있던 노션 서비스를 우리가 직접 제작한 서비스로 릴리스하는 것이 목표였다.노션 서비스를 이전하기로 결심한 이유는 크게 두가지다.첫째, 로딩 속도가 느리다.가장 큰 이유는 기존 페이지의 로딩 속도 문제이다. 노션 서비스를 먼저 제작한 이유는 고객의 반응을 검증하며 우리의 가설이 맞는지 확인하기 위해서였다.하지만 서비스 자체의 속도가 느려 가설 검증에 어려움이 있었다.. 2024. 7. 22.
2024년 상반기 회고 0. 회고를 시작하며2024년도 벌써 절반이 지나갔다.올해는 6개월이라는 시간이 빠르게 지나간 느낌이 든다.특히 프로젝트 일정이 한 번에 2~3개 겹치는 일이 많아 정신없는 순간이 많았다. 6개월 동안 있었던 일이 너무 많아서 회고라기보다는 기록이 된 느낌이 있다.그래도 나를 돌아보기 위해 기억을 되짚어본다.1. 42 서울1월: webserv우리의 소중한 웹서버올해의 42 서울 첫 프로젝트로 C++로 nginx를 만들게 되었다.3명이서 3달 정도 걸리는 분량의 프로젝트인데, 2명이서 1달 안에 완료하게 되었다. 워낙 합을 많이 맞춰본 팀원이기도 했고, 체계적으로 협업을 진행한 덕분이라고 생각한다.GitHub 브랜칭 전략, 코드 리뷰, 에러 코드 정리 등 열심히 프로젝트를 진행했다. 이 프로젝트를 위해 한.. 2024. 7. 14.
[오브젝트] 10장 - 상속과 코드 재사용 1. 개요중복된 코드를 제거하고 코드를 재사용하고 싶다는 욕망을 가져본 적이 있을 것이다.이번 장에서는 코드 재사용에 대해 살펴보고 그 기법 중 하나인 상속에 대해 자세히 알아본다.2. 중복 코드중복 코드가 안 좋은 이유중복된 코드는 변경을 방해한다.요구사항이 변경 됐을 때 중복된 코드가 많다면 그 코드를 모두 수정해야 한다.각 코드를 수정해도 되는지 일일이 테스트하며 요구사항 변경을 해야 한다. 이 때문에 중복 코드가 있으면 코드를 수정하는데 필요한 노력이 몇 배로 증가된다.어디서 오류가 생길지 모르는 중복된 코드를 변경해야 하기 때문이다.저자는 중복 코드는 마치 시한폭탄과 같다고 비유할 정도이다.중복 코드를 판단하는 기준중복 코드를 판단하는 기준은 의외로 변경이다.요구사항에 의해 로직을 변경할 때, .. 2024. 6. 16.
[오브젝트] 9장 - 유연한 설계 1. 개요8장에서는 의존성에 대해 살펴보고 여러 의존성 관리 기법들을 알아보았다.이번 장에서는 의존성을 관리하기 위한 몇 가지 원칙을 배우게 된다.2. 개방-폐쇄 원칙개방-폐쇄 원칙개방-폐쇄 원칙(Open-Closed Principle, OCP)은 '모든 개체는 확장에 대해 열려 있고, 수정에 대해 닫혀 있어야 한다'는 원칙이다. 여기서 확장은 애플리케이션에 새로운 동작이 추가되어 기능이 늘어나는 것을 의미한다.수정은 기존 코드가 수정되는 것을 의미한다.런타임 의존성, 컴파일타임 의존성과의 관계앞서 컴파일타임은 코드 레벨과 관련이 깊다는 것을 보았다.개방-폐쇄 원칙은 '컴파일타임 의존성을 수정하지 않고도 런타임 의존성을 변경할 수 있음'으로도 볼 수 있다. 런타임 의존성과 컴파일타임 의존성을 구분하기 위.. 2024. 6. 15.
[오브젝트] 8장 - 의존성 관리하기 1. 개요객체지향 설계를 위해 높은 응집도를 가진 객체를 만들게 된다.응집도가 높은 객체는 한 가지 일만 잘하기에 다른 객체와 협력이 필요하다.응집도가 높아질수록 자연스럽게 협력도 늘어난다. 하지만 협력을 하기 위해서는 다른 객체를 알아야 한다.즉 협력의 과정에서 의존성이 생기게 되는 것이다. 협력을 위한 적절한 의존성은 유지하되, 변경을 막는 과도한 의존성은 제거해야 한다.이를 의존성 관리라고 부른다.2. 의존성이란?실행 시점 의존성런타임 의존성(run-time dependency)이라고도 부를 수 있다.애플리케이션의 실행 시점에서 의존하는 객체가 정상적으로 동작하려면, 의존 대상 객체가 반드시 존재해야 한다. 구현 시점 의존성컴파일 타임 의존성(compile-time dependency)이라고도 불린.. 2024. 6. 13.
[오브젝트] 7장 - 객체 분해 내용 정리: 20240410 TIL 1. 개요 복잡한 문제를 단번에 해결하는 것은 어렵다. 그 문제를 해결하기 위해서는 너무 많은 정보가 필요하고, 우리의 머리는 이를 버티지 못한다. 이처럼 문제 해결에 필요한 정보가 용량을 초과하는 경우를 인지 과부하(congitive overload)라고 한다. 인지 과부하를 막기 위해 우리는 복잡하고 큰 문제를 해결할 수 있는 작은 문제로 나눈다. 추상화를 사용해 정보의 핵심만을 남기며 문제를 분해(decomposition)한다. 프로그래밍 언어도 추상화를 통해 복잡성을 극복하며 발전해 왔다. 기계어는 어셈블리어로 추상화되고, 어셈블리어는 고수준 언어로 추상화되었다. 프로그래밍 패러다임도 추상화와 분해의 관점에서 살펴보자. 2. 프로시저 추상화와 데이터 추상화 프로.. 2024. 4. 14.