일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- curl
- 화자분리
- 메소드
- API Gateway
- monitoring
- java
- elastic search
- 하이브리드 데이터 모델
- pyannote
- fosslight
- Spring
- ELK
- roll over
- template/callback
- 파이썬
- 자료구조
- supabase
- OpenSource
- metricbeat
- devops
- mybatis
- DI
- Nice
- docker
- jwt-java
- prometeus
- kong
- C++
- umc
- konga
- Today
- Total
목록BackEnd/JAVA\SPRING (22)
youngseo's TECH blog

과제진행 중인 프로젝트에서 검색 기능 구현 과제를 맡게 되었다. 키워드(ex. 헤어)를 인풋으로 받아 요청하면, 키워드가 포함된 포트폴리오 리스트들을 반환받아야 한다. 단순히 MySQL의 LIKE, OR 문법을 사용하여 구현할 수 있지만, OpenSearch(ElasticSearch) 검색엔진을 사용하게 되면 역인덱싱이 가능하기에 훨씬 빠르게 검색 기록을 가져올 수 있다. ElasticSearch(OpenSearch)의 역인덱싱 로직에 대한 설명은 이전 블로그 글에서 참고할 수 있다. AWS OpenSearch vs ElasticSearchAWS OpenSearch는 ElasticSearch를 기반으로 만들어진 툴이다. ElasticSearch와 OpenSearch의 역사(?)를 알아보면 재미있는 내용들..

모두가 알다시피 인증 기능 구현은 매우 무겁다 😬현재 진행 중인 프로젝트는 모바일 기반 플랫폼 서비스로, OAuth2.0를 사용한 카카오, 구글, 애플 로그인을 구현하는 것을 목표로 하고 있다. 그러나 소셜 로그인 기능의 경우 메인로직이 아닐 뿐더러, 유저 입장에서 거부감도 심하게 들 것이고, 우리 팀도 OAuth2.0를 모두 이해해 구현하기에는 2주 정도의 시간이 허비될 것 같아 간단히 유저만 구분할 수 있는 로직으로 1차 배포를 진행하기로 하였다.SpringSecurity 를 사용한 이유SpringSecurity는 Springboot로 들어오는 Request/Response와, 실질적인 CRUD를 처리하는 DispatcherServlet 사이의 Filter chain 형태로 이루어져 있다. (Req..

S3S3는 AWS에서 가장 처음 런칭한 프로젝트라고 한다. 이미지 저장소로 잘 알고 있는 이 S3, Simple Storage Service에 이미지 저장소를 만들어보자.S3 Object의 구성요소Key - 파일의 고유 식별자로, bucket/test/example.png와 같은 고유한 파일 경로를 의미한다.Value - 파일의 내용(예: 이미지 바이너리 데이터, 텍스트 데이터)Version ID - 파일의 버전 아이디로, 같은 파일명이나 다른 버전으로 올리고 싶을 때 사용한다. 이를 통해 롤백 가능!Metadata - 데이터의 데이터라고도 불리는, 파일의 정보를 담은 데이터를 의미한다.(예. 최종 수정일, 파일 타입)CORS(Cross Origin Resource Sharing) - 한 버킷의 파일을 ..

Template 메소드 패턴과 Callback 패턴에 대해 우선 따로따로 이해해보는 게 좋겠다 ! (이론 -> 구현 내용 순으로 구성하였습니다.)이론Template 메소드 패턴(문제 상황) 핵심 기능 & 부가 기능이 모조리 섞여 있는 문제 (해결 방법) 변하는 것과 변하지 않는 것(반복되는 코드)을 분리하겠다 !-> 상속으로 푼다.이론보다 , 코드 샘플로 이해해보자!AbstractTemplate (변하지 않는 부분, 반복되는 부분)이 부분이 바로 Template, 우리가 아는 파워포인트 템플릿과 비슷하게 변하지 않는, 반복되는 부분에 해당한다.package hello.advanced.trace.template.code;import lombok.extern.slf4j.Slf4j; @Slf4jpublic a..

개요아무 생각 없이 인증처리를 안 해놓은 벌로 누군가의 침입이 일어났다.. 😱어쩐지 람다 함수 절반이 안 돌아서 데이터를 살펴보니 누군가.. 백준에 없는 아이디와 이름을 넣어놨다. 심지어 스터디에도 넣어놨넴... 😵 인증처리를 미리미리 해뒀으면 좋았겠지만, 지금이라도 코알라 임원진끼리만 공유할 수 있는 비밀번호 처리를 해두는 것이 좋겠다 .Spring SecuritySessionSpring Security는 기본적으로 JSESSION_ID라는 이름을 가진 세션 방식의 인증 메카니즘으로 인증을 처리한다. Spring Security를 공부하다 보면 JWT 개념에 대해서도 같이 공부하게 되는데, 토큰(JWT) 방식과, 세션 방식은 엄연히 다른 내용이므로 이에 대해 알고 가야 한다 !세션에 대한 내용에 대..

Java Spring을 사용하면서 드는 가장 큰 고민은 역시나 어떻게 하면 잘 쓸 수 있을까 이다. 이번 프로젝트는 규모가 크지는 않더라도 제대로 끝내보자고 생각했다! 구현 도중 Entity간 연관관계는 어떻게 줄지, 쿼리는 어떻게 작성할지(어디에서 어떻게 조회할지), 데이터가 없는 경우 Null 처리는 어떻게 할지, 코드는 어떻게 보기 쉽게 작성할지,, 등등 고민을 많이 하게 되었고 다음 프로젝트에서는 이 고민들을 더욱더 반영해보고 싶다 접근제어자, 생성자 사용 클래스와 멤버의 접근 권한을 최소화하자 는 것이 접근제어자의 핵심이다. 접근제어자를 공부하면서 생성자와 static, final 등의 변수도 함께 공부하는 것이 도움이 많이 되었다. 접근수준 private : 멤버를 선언한 top level 클..

이 글은 Springboot war 파일 배포 글의 후속편입니다.위 글에서 나는 파일을 jar 방식으로 배포했고 문제 없이 동작했었다. 그런데...... ??? 후.. build.gradle에 여러 의존성을 추가하고 커밋하고.. 한 이후 갑자기 빌드가 실패하기 시작했다.. 아직도 정확히 어떤 커밋이 영향을 준건지는 잘 모르겠다😑 커밋 지워버림.. 그래도 정석적인 방법으로 다시 구현해볼 수 있었고, 보이는 것과 같이 결국 build에 성공했다 ! 이 짜릿했던 순간을 함께 알아보자 😆 결론적으로 말하면 war 파일을 jar 형식으로 배포하지 말자.. 유효한 jarfile이 아니기 때문에 아래 오류를 볼 수 있다.Error: Invalid or corrupt jarfile /app.warWAS 와 WS /..

다음은 토비의 스프링 7.3~7.4장 을 공부하고 정리하였습니다. 7.1~7.2장 내용 간단 요약 SQLReader - SQL을 어떻게 읽어오는지 SqlRegistry - SQL을 어떻게 저장해둘 건지 SqlService 이란? @PostConstruct 가 달린 빈 초기화 메소드와 SqlService 인터페이스에 선언된 메소드인 getFinder()을 sqlReader과 sqlRegistry를 이용하도록 변경 자기 자신을 참조하는 빈이다. → sqlService를 구현한 메소드와 초기화된 메소드는 외부에서 DI 된 오브젝트라고 생각하고 결국 자신의 메소드에 접근하므로 이 셋을 이용하여 디폴트 의존관계를 갖는 빈을 만들 수 있다. 디폴트 의존관계란 외부에서 DI 받지 않는 경우 기본적으로 자동 적용되는 ..