전체 글 149

AWS EC2에 ElasticSearch & Kibana 설치 하기

지난 포스팅에서는 ELK중 logstash을 단독으로 인스턴스에 설치를 하였고 이번에는 남은 EK을 인스턴스에 설치를 해보겠습니다. logstash 설치를 선행 하시고 시작하셔야 합니다. 설치가 안되어 있으면 이 곳을 보고 설치하고 와주시길 바랍니다. 먼저 인스턴스 스펙은 EC2: Ubuntu(18.04) 성능 t2.small(2코어 2기가) 터뮤즈로 인스턴스에 접속을 해줍니다. 그다음 다음 명령어를 실행 시켜주세요 #도커를 설치 해줍니다. sudo snap install docker #깃헙 레포지토리를 다운 받아줍니다. git clone https://github.com/Kyeongrok/docker-compose-elastic-kibana #디렉토리이동 cd docker-compose-elastic-..

AWS 2022.02.21

맥북 Termius로 AWS EC2서버 접속 하기

이번 포스팅에서는 맥북(M1)에서 AWS에서 생성한 EC2에 Termius로 접속 해보는 시간을 가지겠습니다. 먼저 Termius를 상큼하게 설치를 해줍니다. https://termius.com/mac-os 회원가입을 해주야 사용이 가능하므로 귀찮더라고 회원 가입까지 하셨으면 이러한 화면을 마주하시게 됩니다. Ec2에 접속을 하기 위해서는 먼저 AWS EC2서버 주소가 있어야 합니다. AWS 홈페이지에서 주소를 복사를 해줍니다. 퍼블릭 주소 아무거나 복사를 해온다음 Termius에 들어가서 Add host버튼을 눌러줍니다. 그럼 주소를 적는 칸에 붙혀주기를 해줍니다. 그리고 username을 눌러준다음 AWS에서는(EC2: Ubuntu서버) 기본적으로 ubuntu를 입력해주고 Keys버튼을 눌러서 IAM..

카테고리 없음 2022.02.12

AWS EC2 에 Logstash 7.15.2 설치 하고 elasticsearch연동 하기 [Amazon Linux 2 AMI (HVM) - Kernel 5.10]

안녕하세요 지난 포스트에 AWS OpenSearchService를 도전 하다가 Logstash연결이 어려워서 직접 ELK환경을 구현을 하기로 해서 포스팅을 해보겠습니다. 복습도 할겸 먼저 AWS 에서 인스턴스를 생성해줍니다. Logstash같은 경우에는 프리티어를 쓰면 elasticsearch에게 보낼때 서버가 죽어버려서 제대로 작동이 안되는것을 확인하고 T3.small(2코어 2Gb)를 선택해서 연결을 해보겠습니다. 쭉쭉쭉 디폴트 값으로 다 넘겨줍니다. 시작하기를 눌러주시면 인스턴스가 실행이 됩니다. T3.small같은 경우에는 프리티어가 적용이 안되니 과금에 유의 해주세요 잠깐 테스트 해보고 인스턴스 종료해주시는것을 추천합니다. 퍼블릭 아이피를 복사후에 터미널로 진입을 해줍니다. 터미널 진입은 이곳 ..

AWS 2022.02.10

Amazon OpenSearchService 구성

진행중인 프로젝트를 하면서 로그 관리 부분을 공부하면서 elasticsearch 등등 을 검색을 통해서 이런게 있구나 하고 알아가고 있었다. 스프링에서 로그가 발행하면 logstash가 로그를 가공을 하여서 쪼르륵 elasticsearch에게 알려준다. 그리고 수집된 정보를 kibana를 통해서 시각화, 모니터링을 해준다고 한다 이래서 이를 쉽게 설치를 위해서 개발자들이 docker-elk(elasticsearch, logstash, kibana) 종합 세트를 만들었다. 참 개발자들은 게으르다. 여기서 프로젝트를 혼자만 하는게 아니라 여럿이서 협업을 하다보니 혼자 로컬에 도커로 하는 것보단 AWS OpenSearch를 통해서 서버구축을 하면 따로 설치할 필요 없이 기능을 추가할수 있어서 서버를 만들기로 ..

AWS 2022.02.07

보고도 믿지못한 카카오 API호출 4만6천번..

떄는 01/17일 12시쯤 개발은 뭔가 하기 싫고 열심히 딴짓을 하던중에 진행중인 프로젝트가 카카오 로그인을 지원하는 웹을 만들고 있었습니다. 01/12일도 역시나 백엔드 개발을 했었습니다. 하지만 api요청 건수가 4만6천번이라는 믿기 힘든 숫자가 나왔고 처음에는 팀원들에게 공유를 하면서 뭔가 카카오 서버에서 오류일거라고 다들 생각했습니다. 하지만 진짜 에러 일까 궁금하기도 해서 카카오 개발자내에 데브커뮤니티에서 카카오측 답변가들에게 질문을 해보았습니다. 돌아온 답변은 정상 서비스단에서 구현을 한 public void isValidToken(String accessToken) { validateTokenExists(accessToken); String vaildCheckHost = "https://ka..

상품 조회 중에 만난 N+1문제

N+1문제란? JPA로 개발을 하면 자주 접하는 문제이다. 하위 엔티디들을 첫번쨰 조회할떄는 코빼기도 안보이다가 Lazy로 되어 있는 놈들은 필요할때가 되면 그제서야 조회를 시작한다. 시작할때 한방에 Eager로 조회를 하면 sql문을 많이 날릴필요가 없다. 저번 포스팅에서 작성한 페이징 처리를 위해서 작업을 마치고 조회 쿼리문을 세어보니 총 12번의 쿼리문이 나갔다. Page findProductsByProductIdIsLessThanOrderByCreatedAtDesc(Long productId, Pageable pageRequest); 결과 2022-01-18 21:55:57.772 DEBUG 7944 --- [nio-8080-exec-2] org.hibernate.SQL : select 1번 pr..

Spring boot 에서 AWS S3 버킷 업로드 파일 확장자 구분해서 업로드 해주기

아거 프로젝트에 파일을 저장하는 부분을 고민하다가 S3에 업로드 하여 업로드된 파일의 URL을 DB에 저장을 하기로 회의를 통해서 결정 하게 되었습니다. S3는 AWS에서 제공을 하는 객체 스토리지 서비스입니다. 쉽게말해서 도라에몽 주머니 처럼 아무거나 다들어가는 만능 주머니 입니다. 그래서 Springboot를 이용하여 AWS S3에 파일 업로드에 대한 포스팅을 해보려고 합니다. S3버킷 만들기는 다른 블러거분들이 올린 좋은 글들을 참고해서 만들어 주시면 될것같습니다. 버킷을 만들고 IAM키를 만들었다는 가정하게 진행을 하겠습니다. S3에 아무파일이나 올리면 안되기때문에 이미지만 올리게 s3의 권한정책을 변경해보겠습니다. 아거에서는"png","jpg","jpeg"만 업로드 하게 설정하였습니다. 버킷 정..

spring-boot 프론트엔드와 무한 스크롤 구현 하기[ep.2]

spring-boot 프론트엔드와 무한 스크롤 구현 하기[ep.1] spring-boot 프론트엔드와 무한 스크롤 구현 하기[ep.1] 왼쪽은 페이징 표시 오른쪽은 무한 스크롤 기능입니다. 페이징 표시는 웹에서 사용하기 적합하지만 현재 만들고 있는 서비스는 모바일 웹에 특화된 서비스 이므로 무한 스크롤 기능을 적용을 thisisthat-it.tistory.com 지난번에 구현한 페이징 처리는 정말 단순하게 페이지 처리만 해준것입니다. 문제점이 있다면 사용자가 조회할때 다른 사용자가 상품등록을 해주어서 DB에 상품 데이터가 1개가 추가된다는 상황에서 문제점이 발견이 됩니다. 간단하게 이해를 쉽게 하기 위해서 그림을 첨부해보겠습니다. https://github.com/a-ger/a-ger-backend/is..

spring-boot 프론트엔드와 무한 스크롤 구현 하기[ep.1]

왼쪽은 페이징 표시 오른쪽은 무한 스크롤 기능입니다. 페이징 표시는 웹에서 사용하기 적합하지만 현재 만들고 있는 서비스는 모바일 웹에 특화된 서비스 이므로 무한 스크롤 기능을 적용을 해야합니다. 추후에는 앱으로도 만들어야겠다. 페이징 기능은 JPA에 Page로 반환을 해주면 간편하게 구현을 할수 있습니다. Pageable로 값을 넣어주면 Db에서 데이터를 처음부터 끝까지 카운팅을 해준다음 pageable에 들어있는 size와 page를 보고 알아서 page에 대한 내용을 처리해줍니다. 여기서 size는 페이지에 보여줄 데이터 갯수입니다. 만약에 size: 3, page: 0 이라고 하면 0번째 페이지에 3개의 데이터를 불러와라 라고 볼수 있습니다. 이런식의 페이지 처리는 만약에 그냥 findAll이라면 ..

spring boot 어노테이션 정리

@SpringBootApplication 해당 클래스가 스프링 부트를 성정하는 클래스를 뜻한다. @Autowired 의존성 주입을 위한 어노테이션 자동으로 다른 오브젝트를 찾아서 연결 시켜준다. @Component 이 클래스가 자바 빈으로 등록 시키라는 역활을 해준다. @Bean 스프링에게 이 오브젝트를 정확히 어떻게 생성해야하고 매개변수는 어떤게 들어가야하는지를 알려준다. @Builder 빌더 클래스를 따로 생성하지 않아도 자동적으로 생성해준다.

Spring Boot 2022.01.02