분류 전체보기

배포, 운영

[Ubuntu] Ubuntu 20.04서버 대기 모드로 들어가는 문제 해결

발생하는 문제문제 찾기 현재 가상서버(Ubuntu 20.04)에 Elasticsearch DB가 작동되게끔 docker를 통해 컨테이너를 실행중입니다. 타 서버에 돌아가는프로젝트에서 Elasticsearch 관련 API 호출시 첫 호출이 오류로 돌아오거나 상당한 시간이 소요되는 문제점이 있었습니다.발견된 문제점기존 Ubuntu 18.04 버전에서는 확인되지 않았던 문제였지만 20.04 버전은 서버 구성 시 일정 시간이 지나면 네트워크 인터페이스까지 대기모드로 들어가는 현상이 발생합니다.해결 방안대기 모드와 관련된 서비스 유닛을 비활성화하는 대신에 'mask' 명령을 사용하여 변경하는 것으로 문제를 해결했습니다. 이를 위해 다음과 같은 단계를 수행했습니다.'mask' 명령을 사용하여 대기 모드 관련 서비스..

스프링/테스트

Spring Testcontainer를 활용한 Elasticsearch 테스트 코드 작성

왜 Testcontainer를 사용하는가?Spring DB 테스트 Rollback 원리Spring에서는 테스트 코드 작성을 위해 @Test 어노테이션과 @Transactional 어노테이션을 함께 사용하면 기본적으로 롤백이 활성화됩니다. 이는 테스트가 실행된 후 변경된 데이터가 실제 데이터베이스에 영향을 미치지 않도록 보장하는 것입니다. NoSql 테스트 NoSQL 데이터베이스를 사용할 때는 이러한 접근 방식이 다소 복잡해질 수 있습니다.NoSQL 데이터베이스는 일반적으로 ACID 트랜잭션을 지원하지 않거나, 관계형 데이터베이스와는 다르게 구현됩니다. 따라서 Spring의 트랜잭션 처리 메커니즘을 NoSQL 데이터베이스에 적용하는 것은 번거롭습니다.NoSQL 데이터베이스를 사용하는 경우에는 다음과 같은 ..

스프링/테스트

Postman을 활용한 API 테스트에서의 로그인 세션 유지 및 타 API 테스트

간략 소개Postman은 API를 테스트하고 디버그하는 데 유용한 강력한 도구입니다. 그러나 로그인 세션을 유지해야 하는 경우, 특히 세션 정보를 다른 API 요청에도 적용해야 할 때가 있습니다. 이 글에서는 Postman을 사용하여 로그인 세션을 유지하고 다른 API를 테스트하는 방법에 대해 알아보겠습니다. 흐름로그인 요청 보내기: Postman을 사용하여 로그인 API에 요청을 보냅니다. 사용자 인증이 성공하면 서버로부터 세션 ID를 받습니다. 인증 정보 저장: 받은 인증 정보를 Postman의 환경 변수나 글로벌 변수에 저장합니다. 주로 헤더나 쿠키에 저장하여 세션을 유지합니다.다른 API 요청 시 인증 정보 사용: 다른 API를 테스트할 때, 저장된 세션 정보를 사용하여 요청합니다. Postman..

데이터베이스/ElasticSearch

Elasticsearch DB 구축 과정과 최적화 전략

필요성교내 프로젝트 진행시에 금전적인 문제로 최종 배포 전에 테스트 단계에서는 AWS ec2 t2.medium 단계를 사용하여 Elasticsearch DB 서버를 구축해야 했습니다. 이 과정에서 DB의 노드 개수와 메모리 할당 크기를 결정해야 했습니다.과정  Docker를 이용하여 Elasticsearch를 구축했기 때문에 Docker compose.yml 파일과 설정 파일 .env 파일을 수정하여 테스트를 진행했습니다.  테스트를 진행할 때는 top 명령어를 이용하여 서버의 메모리 할당 상태를 모니터링하고, 동시에 Docker Elasticsearch 노드의 로그를 분석하여 테스트를 진행했습니다. 이를 통해 각 단계에서의 메모리 사용량과 서버의 상태를 확인하고 최적의 구성을 찾았습니다테스트 과정 및 ..

데이터베이스/ElasticSearch

Elasticsearch 8.* 버전의 복잡한 쿼리를 QueryDSL의 BoolQuery로 처리하기

과거 Spring에서의 BoolQuery사용기존에는 AbstractElasticsearchConfiguration을 통해 Elasticsearch 설정을 처리해주고 elasticsearch.core.query 안의 관련 항목들을 통해 복잡한 쿼리문을 진행했던 것과 달리, Spring 3.* 및 Elasticsearch 8.* 버전에서는 많은 변경 사항이 있습니다. 이러한 변경 사항은 Elasticsearch와 Spring Data Elasticsearch 라이브러리의 최신 업데이트로 인해 발생했습니다. 이 글에서는 이러한 변경 사항에 대해 자세히 알아보고, 새로운 버전에서 Elasticsearch를 설정하는 방법과 주요 기능을 살펴보겠습니다."복잡하지 않은 쿼리문동적이지 않은 쿼리가 필요할때는 Elast..

알고리즘/자바

[소프티어 21년 재직자 대회 예선]회의실 예약

문제, 제약 조건 참고https://softeer.ai/app/assessment/index.html?xid=102028&xsrfToken=9bwXqOhPN1B0nuaGBcczAKTp5pyrNhl3&testType=practice Candidate | Softeer Assessment UI softeer.ai풀이강의실 이름을 받을 배열 하나 생성 후 값을 입력받고 Arrays.sort()를 이용하여 정렬해준다각 강의실 String key값에 알맞은 빈강의실 시간 체크용 boolean[] value값을 만들어준다.(HashMap(그림 1참고)각 테스트 케이스가 들어오면 해당 강의실 이름을 hashmap.get(강의실 이름)을 줘서 해당 시간대를 가져온다. 이후에 강의시간으로 사용하는 시간을 true로 변경..

스프링

AWS S3와 IAM 생성: 스프링과의 연동 방법 및 이미지 저장

전체적인 흐름S3 티어 선택 후 S3 버킷 생성액세스 권한을 얻기 위한 IAM 생성스프링 빈에 AWS S3 등록Image API 구현 및 테스트S3 티어 선택 및 S3 버킷 생성S3 티어(스토리지 클래스)어떤 종류의 데이터를 관리하는지, 얼마나 자주 그 데이터에 접근해야하는지에 따라 분류, 사용자는 그에 맞는 티어를 선택Standard가장 보편적으로 사용되는 스토리지 타입IA자주 접근되지는 않으나 접근시 빠른 접근, standard보다 비용은 저렴하나 데이터를 불러올때마다 추가 비용One Zone IAIA와 같지만 하나의 AZ에만 데이터 저장 → 가용영역 문제 생길경우 데이터가 날라갈수도 있음Intelligent Tiering머신러능을 통한 자동으로 파일의 티어를 변경하는 서비스 ex. 접근 많으면 스탠..

스프링

[Spring] Validation 종류 및 적용

Validationhttps://spring.io/guides/gs/validating-form-input Getting Started | Validating Form InputThe application involves validating a user’s name and age, so you first need to create a class that backs the form used to create a person. The following listing (from src/main/java/com/example/validatingforminput/PersonForm.java) shows how to do so: pacspring.io특정 메서드나 파타미터에 사용되어 해당 객체가 유효성 검샅를 통과..

스프링/테스트

[스프링] JUnit @Tag를 이용한 테스트 코드 분리

Junithttps://spring.io/guides/gs/testing-web Getting Started | Testing the Web LayerYou will build a simple Spring application and test it with JUnit. You probably already know how to write and run unit tests of the individual classes in your application, so, for this guide, we will concentrate on using Spring Test and Spring Boot featurespring.io주요 내용단위테스트: 특정 소스코드의 모듈이 의도한 대로 잘 작동하는지 검증하는 테스트이..

데이터베이스/ElasticSearch

Start Elasticsearch with docker

Elasticsearch정의ElasticSearch는 아파치 루씬 기반 검색인진으로 문서 검색, 지도 위치 검색, 머신 러닝 기반 검색, 로그분석등 다양한 용도로 활용되고 있다. 이런 검색 관련 데이터 처리시 사용이유는 여러 노드에 분산하여 구성함으로써 데이터의 가용성을 높이고 성능을 향상 시킬수 있다 역인덱싱기본적으로 ElasticSearch는 데이터 저장시 이를 색인화한다. 이후에 역 인덱싱을 통해 검색을 빠르고 효율적으로수행한다. 쉽게 말하면 책 뒤에 순서대로 적혀있는 단어와 해당 단어의 위치 적혀있는 것을 예시로 들면 쉬울 것이다. Kibana키바나는 ElasticSearch와 함께 사용되는 데이터 시각화 및 관리 도구이다. 키바나를 사용하면 ElasticSearch에서 수집된 데이터를 시각적으로..

Ash_jisu
'분류 전체보기' 카테고리의 글 목록 (4 Page)