일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- aws
- 오블완
- 티스토리챌린지
- CKA 기출문제
- 기록으로 실력을 쌓자
- 정보처리기사실기 기출문제
- Elasticsearch
- Linux
- kotlin querydsl
- IntelliJ
- kotlin
- Java
- kotlin spring
- AI
- kotlin coroutine
- 공부
- PETERICA
- minikube
- CKA
- 정보처리기사 실기
- Spring
- mysql 튜닝
- APM
- Kubernetes
- MySQL
- CloudWatch
- AWS EKS
- 코틀린 코루틴의 정석
- 정보처리기사 실기 기출문제
- Pinpoint
- Today
- Total
목록공부 (24)
피터의 개발이야기
나의 경험을 기록으로!! AWS 서브 도메인 생성부터 로드밸런스 설정과 SSL 인증 처리 과정을 정리하였습니다. 보안을 위해 HTTPS통신을 하며, HTTP:80으로 들어올 경우 HTTPS로 리다이렉션 시키는 방법도 알아보겠습니다. 클라이언트는 DNS를 통해 모두 AWS Route53으로 들어오게 된다. 지금은 기존 도메인에서 서브도메인을 추가하여 서비스를 추가하려 한다. 왜냐하면 SSL인증서가 서브도메인이 와일드카드로 구매하였기 때문이다. AWS Route53 서브도메인 생성 Route53에서 서브도메인을 추가하기 위해 레코드를 생성한다. 예를 들어 peter.xxxx.com을 만들어 보겠습니다. 아직 로드밸런스가 생성되어 있지 않기 때문에 임의 192.168.33.1로 세팅합니다. 레코드를 생성하였습..
5. 배포 과정 5.1.1 무중단/중단 배포 무중단배포는 기존 A,B서비스에 영향이 없는 C를 배포할 때에는 가능하다. 하지만 B서비스가 사용하는 테이블이 변경되는 경우, B와 C가 양립할 수 없는 경우에는 무중단 배포를 할 수 없다. 중단배포는 전체 서비스를 중단하여 배포할 수 밖에 없다. 5.1.2 현재 위치 배포(로드밸런스 이용) 로드밸런스를 이용한 배포 방법이다. 배포하는 서버는 로드밸런스의 대상그룹에서 제외시키고 배포 후에 다시 대상그룹을 지정해 주는 방식이다. 이 경우 서버는 2대 이상이어야 한다. 추가 인스턴스를 생성하지 않고 기존의 인스턴스로 배포하는 무중단 배포방법이다. 5.1.3 서버 단위의 블루/그린 배포 두개 이상의 Auto Scaling 그룹을 나누어 AMI- 시작 템플릿을 지정하..
4장 운영서버의 외부 환경 구성 이번 장에서는 도메인과 HTTPS의 원리를 알아보고 서비스에 적용하는 방법을 설명하고 있다. 도메인과 인증서를 통해 안전한 통신을 하는 방법을 아는 것이 이번 장의 목표라고 생각한다. 4.1.1 도메인, DNS Route53을 통해 도메인을 구입하고 관리할 수 있다. DNS를 모르는 사람을 위해 개념 설명을 하고 있다. 실질적인 서버에 요청을 하기 위해서는 IP가 필요하다. 사람의 인식에 유리한 도메인은 IP로 변환해야한다. DNS는 도메인을 IP로 변환하여 준다. 4.1.2 AWS Route 53을 이용한 도메인 등록 도메인을 직접 구매할 수도 있다. 구입 후 등록된 도메인에서 확인 할 수 있다. 4.1.3 로드 밸런서 도메인 등록 4.2.1 SSL/TLS, HTTPS ..
파일을 S3에 업로드 하는 로직 개발 중 파일명을 고객이 입력한 값으로 해달라는 요청이 있었습니다. 근데 그 고객이 "1054_20210113_ 👍.JPEG" 이름을 지정해 주셨습니다. 긴급 패치... 이럴 줄이야... 그면 우선 긴급 패치한 내용부터 정리합니다. replaceAll @Test public void fileNameFilterTest(){ String fileName = "이상한 파일 이름_1234_20210120 ㅎㅎㅎ 👍 !!#&.jpeg"; fileName = fileName .replaceAll("[^a-zA-Z0-9가-힣_.]", "") // 알파벳과 한글, 숫자, 언더바와 점만 허용한다. .replaceAll(" ",""); // 빈칸제거한다. System.out.println(..
서론 데이터 백업 작업 시에 파일을 읽고 쓰는 로직이 필요하여 정리를 하였습니다. 자바8 이후 자원의 생성과 해제가 자동입니다. Java - Try-with-resources로 자원 쉽게 해제 Java7 이전에, try-catch-finally 구문에서 자원을 해제하였습니다. Java8에서는 try-with-resources는 try(...)에서 선언된 객체들에 대해서 try가 종료될 때 자동으로 자원을 해제해주는 기능입니다. try에서 선언된 객체가 AutoCloseable을 구현하였다면 Java는 try구문이 종료될 때 객체의 close() 메소드를 호출해 줍니다. File Read @Test public void fileReadTest() throws FileNotFoundException { tr..
서론회사에서 Intercom을 사용하고 있습니다. 고객과의 상담 내용을 백업하고자 Intercom API를 연동하는 작업을 정리하였습니다.백업의 필요성Note를 보면 Conversation(대화방)은 2년동안의 데이터만 확인 할 수 있어 과거 상담내역은 따로 백업을 해야합니다. 그리고 저장된 상담내용은 1. 고객과의 분쟁에서 사실관계 입증을 하고 2. IBM 왓슨으로 만들 자동상담 시스템을 위한 학습데이터가 됩니다.Intercom data back-up을 위한 용어의 정의Conversation : 대화방, 각각의 conversation ID가 있음.Conversation parts : 카톡으로 따지면 하나의 버블, Conversation > Transcript > 여기서 오간 하나하나의 대화를 Par..
서론 백엔드 개발을 위해서 제일 먼저 하는 일은 라이브러리 추가입니다. 간혹 gradle을 추가하였지만 특정 Jar들이 로딩되지 않는 문제점이 있습니다. 그런 상황에서 repository를 추가하면 해결됩니다. repository 중 JCenter에 대해서 정리하였습니다. 라이브러리를 가져오지 못하는 상황 build.gradle에 라이브러리를 추가하였습니다. 하지만... 컴파일 단계에서 라이브러리가 없다는 에러가 확인됩니다. gradle은 compile 목록을 확인하고 repository에서 해당 라이브러리를 다운받아 자바 어플리케이션을 컴파일합니다. 하지만 repository에서 라이브러리를 찾지 못하는 경우 이런 에러가 발생합니다. 해결 repositories { mavenCentral() jcent..
백업데이터를 생성할 때에 CSV파일을 생성할 일이 많이 있습니다. CSV 파일 생성 방법에 대해 정리를 하였습니다. gradle compile group: 'com.fasterxml.jackson.core', name: 'jackson-core', version: '2.11.4' compile group: 'com.fasterxml.jackson.core', name: 'jackson-annotations', version: '2.11.4' compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.11.4' compile group: 'com.fasterxml.jackson.dataformat', name: 'ja..
서론 종종 Util, Interceptor, client를 만들 때에 @Component를 선언하였습니다. 그래저 저는 Component가 사전적 의미인 "구성 요소"처럼 보다 작은 단위 혹은 @Controller와 @Service처럼 특화된 중요 구성요소보단 덜 중요한 객체를 선언하는 용도라고 생각하고 있습니다. 그리고 @Componet와 @Controller, @Service 등등이 별개의 것이라고 생각했었습니다. 하지만 제가 잘못 이해하고 있었고 그 부분에 대해서 공부를 하였습니다. 실질적으로 @Controller와 @Service, @Repository는 같은 소스이다. @Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Docume..
서론 개발 프로젝트에서 Apple로그인을 적용하였습니다. 프론트 개발자와 협업하여 Apple로그인을 구현하였고, 이 포스팅은 백엔드의 입장에서 정리를 해 보았습니다. 앱에서 APPLE로그인 성공 후 인증된 appleToken을 가지고 서버에서 처리하는 과정입니다. 인증과정 APP에서 인증하고 API Server에서 또 인증? 상식적으로 이해가 되지 않았다. 앱에서 apple Token이 생성되었다면, 이미 로그인 성공인데, API 서버에서 그 인증 토큰을 다시 검증해야하는 과정이 이해가 되지 않았다. 하지만 앱으로부터 appleToken을 받을 때에 이 요청이 탈취될 수 있는 것이다. 그래서 요청을 탈취한 사용자가 정보를 도용할 수 없도록 서버에서 인증과정을 한번 더 거쳐야 한다. Gradle 세팅 //..