테스트 피라미드로 보는 스타트업 테스트 전략
·
개발 하나둘셋/Java & Spring
스타트업 개발자로 일하면서 일정에 맞춰 빠르게 기능을 개발하는게 중요하다고 생각해 테스트 코드를 작성하지 않고 Postman으로만 테스트를 해왔다. 하지만 프로젝트가 점점 커지면서 점점 다양한 경우의 수를 커버해야 하는 상황이 많아졌다. 단순히 기능이 동작하는지 확인하는 것만으로는 부족했고, 예상치 못한 시나리오에서 발생하는 오류를 사전에 막아야 했다. 이를 해결하려면 테스트 코드 작성이 필요하다는 것을 느꼈다🧑‍💻 테스트코드를 작성하기 시작하면서 어떻게 하면 더 효율적으로 접근할 수 있을지 궁금해졌다.이런내용을 다른 개발자와 커피챗을 하며 이야기했고 테스트 피라미드(Test Pyramid)라는 개념을 알게 되었다. 이 글에서는 테스트 코드 작성의 필요성과 테스트 피라미드를 활용한 효율적인 테스트 방..
서버-클라이언트 연결로 실시간 상태 전달하는 SSE 특징 및 적용기
·
개발 하나둘셋/Java & Spring
프로젝트 진행중 API를 많이 타는 조금 복잡한 로직이 있다. 대신 비동기로 처리해서 즉시 응답을 주고 서버에서 처리가 완료가 되면 상태값을 바꾸는 걸로 완료를 알린다. 그런데 상태값이 바뀌더라도 사용자가 새로고침을 하지 않으면 계속 진행중으로 보이는 문제가 있다. 문제를 안삼으면 문제가되지 않지만 사용자 경험상 충분히 개선의 여지가 있을것 같아 이를 개선할 수 있는 방법이 무엇이 있는 지 찾아보았다  우리가사용하는 웹페이지는 대부분의 경우 웹 브라우저인 클라이언트가 HTTP 요청을 서버에 보내고, 서버는 적절한 응답을 반환한다. 하지만 내가 위에서 말한것 같은 실시간 업데이트 정보나 연속적인 정보를 클라이언트에게 보내야하는 경우 계속 HTTP 요청을 하게 되면 여러가지 비용면에서 좋지 않다. 이런 상황..
Java와 Spring에서의 비동기 처리 @Async와 CompletableFuture
·
개발 하나둘셋/Java & Spring
회사 프로젝트 중 비동기 처리로 인해 작업이 순서대로 처리되지 못하는 문제가 발생했다. @Async와 CompletableFuture를 혼합해 사용했는데 데이터 일관성 유지와 비동기 처리의 이해가 부족했기 때문! 해당문제를 인지하고 문제를 해결하는 과정을 정리해볼려고 한다내가 원했던 프로세스는 각 원본 영상을 비동기적으로 Google Cloud Storage(GCS)에서 다운로드하고(최대 9개) 자막 파일(SRT)을 생성한 후 앞에 2가지 작업이 완료되면 FFmpeg로 srt 파일을 읽어 자막을 만들고 영상을 가공하는 작업이었다. 1.  내가 사용했던 Java와 Spring에서 비동기 처리방법 비동기처리를 하는것에는 다양한 방법이 있지만 보편적이로 많이 사용된다고 생각하고, 내가 사용하는데 문제를 겪었던..
FFmpeg로 자막(srt) 삽입하여 영상 인코딩 시 자막이 깨지는 문제! Troubleshooting
·
개발 하나둘셋/Java & Spring
회사에서 영상을 처리하는 로직을 만들면서 FFmpeg를 자주 사용하고 있다. FFmpeg는 사용해본 지 꽤 되었지만, 이번에 처음으로 블로그에 관련 글을 작성해보려고 한다. 최근에 영상에 SRT 파일(자막)을 입혀 인코딩 후 다운로드하는 로직을 작성했는데, 일부 영상에서 자막이 깨지거나 나오지 않는 문제가 발생했다. 이에 대해 FFmpeg가 무엇인지 간단히 정리하고, 최근에 겪었던 문제에 대해 설명해보려고한다1. FFmpeg란?1) FFmpeg멀티미디어 데이터를 다루기 위해 주로 사용되는 오픈 소스 소프트웨어. 비디오, 오디오, 및 기타 멀티미디어 파일과 스트림을 녹화, 변환, 스트리밍할 수 있는 다양한 기능을 제공. FFmpeg는 리눅스(Linux), 윈도우(Windows), 맥OS(macOS)를 포함..
Spring Boot 3.x 주요 변경 사항과 마이그레이션 방법
·
개발 하나둘셋/Java & Spring
2022년 11월 기존의 Spring framework 5와 Spring Boot 2.X를 대체하는 Spring framework 6와 Spring Boot 3가 릴리즈되었다. 새로들어가는 회사 프로젝트와 사이드프로젝트에서 Spring Boot 3버전을 사용하기에 오늘은 Spring Boot 3버전의 주요 업데이트 내용과 레거시 방법에 대해서 알아볼려고 한다. 1. Spring Boot 3.x 주요 업데이트 내용 Java 17 버전 이상만 지원: Spring Boot 3.0은 최소 Java 17을 필요로 하며, Kotlin 1.7 이상도 지원 Java EE를 Jakarta EE로 대체: javax.*에서 jakarta.*로 변경. 기존에 java는 오라클이 상표권을 갖고 있기 때문에 Jakarta로 이름..
Redis 서버 재시작 시 데이터 초기화 문제와 해결 방법: RDB와 AOF
·
개발 하나둘셋/Java & Spring
오늘은 Redis 서버가 재시작될 때 발생하는 데이터가 삭제되는 문제를 다룰려고 한다. 실제로 redis로 조회수 구현 로직을 작성했을 때 조회수이기 때문에 유지가 되어야하는데 서버를 재시작할 때마다 리셋이 되서 조금 당황했던 경험이 있다. 왜 데이터가 삭제되는지, 해결방법에는 어떤 것이 있는지 정리해보겠다.1. 문제점: 서버 재시작 시 데이터 삭제Redis는 메모리 기반의 데이터 스토어로서, 기본 설정 상태에서는 서버가 재시작되면 메모리에 저장된 모든 데이터가 삭제된다. 이는 내가 사용했던 Sorted Set뿐만 아니라 모든 자료형의 데이터에 적용되는 문제이다.2. 해결 방법: Redis 설정 변경을 통한 데이터 영속성 확보데이터를 디스크가 아닌 메인 메모리에 저장하고 관리하는 "In-memory D..
유리코딩
'개발 하나둘셋/Java & Spring' 카테고리의 글 목록