또 하나의 프로젝트가 끝나가고.. 보안 취약점 점검을 받게 되는데...... 프로퍼티 파일에 DB Connection을 위해 접속 계정을 명시한 것이 걸렸다. Jasypt를 이용하여 프로퍼티 암호화 적용하였는데, 그 방법을 정리하고자 한다. 1. Maven 의존성 추가 com.github.ulisesbocchio jasypt-spring-boot-starter 2.1.2 - maven 을 사용하고 있기에 아주 심플하게 의존성을 추가할수 있었다. *아래 블로그에서 버전 3 이상에서는 오류가 있다고 하길래 안전하게 버전 2.1.2로 사용하였다. https://velog.io/@ssol_916/%EC%95%94%EB%B3%B5%ED%98%B8%ED%99%94%EB%A5%BC-%EC%9C%84%ED%95%9C-..
IDENTITY 전략 문제점 JPA에서 아래와 같이 엔티티에 PK가 Auto Increment 되도록 IDENTITY 전략을 사용할 때가 있다. @Entity @Table(name = "task") public class Task { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) // Auto Increment 되는 PK 생성 private Long seq; //이하 생략 } } 그런데 이 전략의 최대 단점은 JPA 에서 제공하는 Bulk Insert를 사용할 수 없다는 점이다. 기본적으로는 JPA 에서 saveAll()을 통해 자동으로 Bulk Insert를 사용할 수 있지만, IDENTITY 전략을 사용하게 되면, Insert 쿼리문이 하나씩 찍히..
서론 그땐 몰랐다... 5년전..신입사원때 웹운영을 했을 당시,, 맡게된 API가 SOAP 방식이였다는 걸,, 그땐 알지 못했다... 외주SW였기에 알수있던 자료도 사람도 없었다....허우적허우적대며 공부하면서 운영하면서 결국엔 이젠 알게된, 그당시의 나, 아주 칭찬해! (아래는 그 당시에 썼던 블로그 글)ㅎㅎ https://hyejikim.tistory.com/25 그때는 몰랐고, 이제는 아는 SOAP과 Rest API의 정의와 차이점을 작성한다. 본론 1. SOAP과 Rest API의 개념 - SOAP : HTTP, HTTPS, SMTP 등을 사용하여 XML형태의 데이터를 교환하는 프로토콜 - REST API : HTTP Method를 통해 자원을 처리하도록 설계된 아키텍처 2. SOAP과 RestA..
noRollbackFor 찾게된 썰 프로젝트 개발 중 '로그인 실패횟수를 카운트하는 요구사항'이 있었다 처음에는 실패횟수 카운팅을 간과하고 단순히 로그인을 구현하고자 Spring Security 통해 username/password가 유효한지 판단하는 AuthenticationPrivider 클래스를 구현하였다. 그런데, AuthenticationPrivider에서 로그인정보가 False임을 리턴했을때, 예외가 발생하면서, 트랜잭션이 롤백되었고, 실패횟수를 DB에 저장할수 없었다. 그래서 서비스 단에서 비밀번호를 검증하고 예외처리가 아닌 응답값을 리턴하는 방식으로 수정하였다. 다른 서비스에서는 이러한 로직을 어떤식으로 구현하는지 궁금해서 리서치하는 도중에 noRollbackFor 옵션을 발견하게되었고,서..
http://aladin.kr/p/7yaJl 도메인 주도 설계로 시작하는 마이크로서비스 개발 위키북스 IT Leaders 시리즈 33권. 마이크로서비스 개발에 입문하고자 하는 분들을 위해 전반적인 마이크로서비스 아키텍처의 개념과 주요 패턴들을 소개하고 마이크로서비스 개발 방법으로 가장 www.aladin.co.kr 집앞 도서관에서 책을 훓어보다가 MSA 관련해서 읽기 쉬운 책을 발견해서 읽어보는 중이다. 몇가지 정리해본다. 스프링 클라우드 기반 아키텍처(MSA) 서비스 레지스트리 대표 도구: 스프링 유레카, 쿠버네티스 DNS 및 서비스 서비스 라우팅기능 H/W 구현: L4 S/W 구현: API 게이트웨이 대표 도구: 스프링 API 게이트웨이 서비스, 쿠버네티스 서비스·인그레스 리소스 외부 저장소: 각 마..
할루 # API 버전관리 필요성 몰랐던 썰 연구소로 넘어오기 전, 그룹웨어 운영팀에 있을 때, 그룹웨어 모바일 앱 API 운영을 맡은 적이 있었다. 그 때, 모바일 앱 담당 책임님이 API를 수정하거나 신규로 딸때는 부디 API에 '_v2' 와 같은 postfix를 붙여달라고 항상 신신당부를 하셨다. 장애 위험있다고 하셨는데, 그 당시에는 솔직히 좀 이해가 안됬었다. 왜냐면 난 클린코드가 더 중요해서 사용하지 않는 메소드를 남겨두는 거 자체가 찝찝했다. 장애가 날 확률도 적다고 생각했었다. 근데, 이번에 장애가 발생할수도 있다는 것을 체감했다. # API 버전관리 안할 때 에러 예시 아주 극단적인 예이긴 하지만, 예를 들어서, API Response 스펙을 변경하는 경우(version2로 업데이트), A..
🙋♀️ 회사에서 이번 프로젝트를 진행하면서 RestAPI 개발을 맡았고, 과정에서 배운것들이 아주 많았다. 크게 보면 JPA, GITLAB, OpenSearch 정도 될 것 같다. 그 중에서 OpenSearch에 대해 정리하겠다. 🔎OpenSearch 사용이유 OpenSearch는 생각보다 레퍼런스가 없었다. OpenSearch는 엘라스틱서치를 기반으로한 아마존의 솔루션인데, 엘라스틱서치가 아닌 오픈서치를 쓴 이유는 다음과 같다. RDBMS 환경에서 엘라스틱서치를 사용하려면 RDBMS를 Document형DB로 변경해주는 작업이 필요하다. 이 작업을 보통 ELK스택에서 L(logstash)가 담당하고, 단순 변환뿐만아니라 배치를 통한 변환, 그리고 K(Kibana)를 연동하여 대시보드 및 모니터링 솔루션..
서블릿 필터를 이용해서 XSS나 SqlInjection을 어떻게 처리하는지 잘 나와있는 블로그들이 있어 정리해본다. Filter란? Servlet 2.3 Specifacation(해당 링크 문서의 챕터 6에 나와있음)에 추가된 대표적인 기능 중 하나가 필터이다. 스펙에는 아래와 같이 설명되어 있다. A filter is a reusable piece of code that transforms either the content of an HTTP request or response and can also modify header information. HTTP Request 또는 HTTP Response 내용을 수정할 수 있고, HTTP 헤더 정보 또한 수정할 수 있는 재사용 가능한 코드 조각 그림으로 보..
- Total
- Today
- Yesterday
- 백준퇴사
- 백준14501
- 프론트엔드
- 개발중캐시삭제
- C++
- script버전
- html꿀팁
- boj
- 선언적트랜잭션 #noRollbackFor #@Transactional
- C# java 차이점
- c#
- 백준
- 캐시삭제
- html
- 프론트엔드개발자
- 런타임에러
- 퇴사
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |