728x90
반응형
- 스레드, 프로세스, 코어의 수는 많을 수록 좋을까요?2025-01-07 17:34:20스레드, 프로세스, 코어의 수가 많을수록 시스템 성능이 향상된다고 생각할 수 있지만, 실제로는 그렇지 않을 확률이 큽니다.스레드가 많으면?스레드가 지나치게 많아지면 운영체제가 스레드 간 컨텍스트 스위칭을 자주 수행해야 하여 CPU 자원이 스레드 관리에 소모됩니다. 이로 인해 실제 작업 수행 효율이 떨어질 수 있으며, 많은 스레드가 동시에 실행될 경우 메모리나 캐시, 락 등의 자원을 경쟁하게 되어 성능 저하나 데드 락이 발생할 가능성이 높아집니다. 또한, 스레드가 많아지면 동기화와 상태 관리가 복잡해져 버그 발생 가능성도 커집니다.프로세스가 많으면?각 프로세스는 독립된 메모리 공간을 가집니다. 그래서 많은 프로세스가 동시에 실행되면 메모리 사용량이 급격히 증가할 수 있습니다. 또한, 프로세스를 생성하고 관..
- [트러블 슈팅] 회원 상세 조회 문제 발생(2025.01.06)2025-01-07 17:17:04회원 상세 조회 api 호출 시 다음과 같은 에러 발생org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.st.eighteen_be.user.domain.UserInfo.userQuestions: could not initialize proxy - no Session 에러 내용을 살펴보면 org.hibernate.LazyInitializationException은 Hibernate에서 발생하는 이벤트이다.이 오류는 영속성 컨텍스트가 종료되어 버려서, 지연 로딩을 할 수 없어서 발생하는 오류이다. JPA에서 지연로딩을 하려면 항상 영속성 컨텍스트가 있어야 한다. 보통 트랜잭션 밖에서 조..
- [트러블 슈팅] redis 관련 문제 발생(2025.01.03)2025-01-03 23:34:41IOS 개발자 분들에게 문제 상황을 들었다. 현재 발생한 문제는 좋아요 & 좋아요 취소와 회원 상세 조회 api 의 응답값이 401 에러가 온다는 것이었다. 1. 좋아요 & 좋아요 취소 문제현재 좋아요 로직은 현재 사용자 아이디 값(= userId)과 좋아요할 회원 아이디(= likedId) 두 가지 값이 필수 값이다.userId를 key값으로 하고 value 값으로 likedId 로 Redis에 저장하고 있다. 만약 이미 좋아요 되어있는데 좋아요 api를 호출하거나if (Boolean.TRUE.equals(likeCountRedisTemplate.opsForSet().isMember(userLikesKey,likedId))) { throw new IllegalStateException("Alrea..
- 단위 테스트와 통합 테스트의 차이점은 무엇인가요?2025-01-02 12:13:45단위 테스트는 소프트웨어의 가장 작은 단위, 즉 개별 메서드나 함수의 기능을 검증하는 테스트입니다. 특정 기능이 올바르게 동작하는지 확인하기 위함이며 독립적이고 빠르게 실행됩니다. 반면 통합 테스트는 개별 모듈들이 결합되어 전체 시스템이 올바르게 동작하는지 검증하는 테스트입니다. 모듈 간의 상호작용이 올바르게 동작하는지 확인하기 위함이며 실제 데이터베이스, 네트워크 등의 외부 시스템과의 통합을 테스트합니다.슬라이스 테스트는 무엇인가요? 🤔슬라이스 테스트는 특정 레이어(ex. controller, service, repository)에 대한 테스트입니다.애플리케이션의 특정 슬라이스가 올바르게 동작하는지 확인하기 위해 작성됩니다. 스프링의 특정 컴포넌트만 로드하여 테스트하므로 상대적으로 빠르게 실행됩니다...
- [로드맵] CI/CD2025-01-02 12:12:14CI/CD(Continuous Integration/Continuous Delivery)는 코드 변경 사항을 빌드, 테스트 및 배포하는 프로세스를 자동화하는 소프트웨어 개발의 관행 및 도구 모음이다. Continuous Integration은 코드 변경 사항을 자주 중앙 저장소에 병합하여 자동화된 빌드 및 테스트를 실행하는 것을 포함하고, Continuous Delivery는 빌드 단계 후에 모든 코드 변경 사항을 테스트 또는 스테이징 환경에 자동으로 배포하여 이를 확장한다. 일부 구현에는 Continuous Deployment가 포함되며, 여기서 변경 사항은 자동으로 프로덕션에 릴리스된다. CI/CD 파이프라인에는 일반적으로 코드 컴파일, 단위 테스트, 통합 테스트, 보안 검사 및 배포와 같은 단계가 ..
- 공유 락과 배타 락에 대해서 설명해주세요.2024-12-31 10:25:09공유 락과 배타 락은 비관적 락(Pessimistic Lock)의 데이터 일관성과 무결성을 위해 사용하는 락 유형입니다.공유 락(Shared Lock)은 무엇인가요? 😀공유 락은 읽기 락(Read Lock)이라고 부르며, 공유 락이 걸린 데이터는 읽기(SELECT)연산만 가능하며, 쓰기(UPDATE, DELETE)는 불가능합니다. 공유 락이 걸린 데이터에 대해서 다른 트랜잭션에서도 공유 락을 획득할 수 있지만, 배타 락은 획득할 수 없습니다. 즉, 공유 락을 사용하면 트랜잭션 내에서 조회한 데이터가 변경되지 않는다는 것을 보장합니다.SELECT * FROM table_name WHERE id = 1 FOR SHARE; 배타 락(Exclusive Lock)은 무엇인가요? 🤔배타 락은 쓰기 락(Writ..
- [로드맵] 기능 테스트2024-12-31 10:21:40기능 테스트는 소프트웨어를 테스트하여 기능적 요구 사항이 충족되는지 확인하는 것이다. 일반작으로 테스터가 소스 코드를 이해하지 못하는 블랙박스 테스트의 한 형태이다.테스트는 입력을 제공하고 예상/실제 출력을 비교하여 수행된다.성능, 부하, 확장성 및 침투 테스트를 포함하는 비기능 테스트와 대조된다.
- [로드맵] 단위 테스트2024-12-31 10:19:06단위 테스트는 프로그램의 개별 구성 요소 또는 단위를 격리하여 테스트하여 올바르게 작동하는지 확인하는 소프트웨어 테스트 방법이다. 이 접근 방식은 미리 정의된 입력으로 실행하고 결과를 예상 결과와 비교하여 함수나 메서드와 같은 애플리케이션의 가장 작은 테스트 가능한 부분을 확인하는 데 중점을 둔다. 단위 테스트는 일반적으로 자동화되어 개발자가 코딩 단계에서 작성하여 버그를 일찍 포착하고 코드 리팩토링을 용이하게 하며 각 코드 단위가 의도한 대로 수행되는지 확인한다. 각 구성 요소를 격리하고 테스트 함으로써 단위 테스트는 코드 안정성과 유지 관리성을 개선하는 데 도움이 된다.
728x90
반응형