
직접 인프라를 구축하고, 개발하면서 고통받았던 사항들 정리한 것이다. 공식 가이드 문서를 다 봤어도 놓칠만한게 꽤 있었을 것 같다. 1. Lambda@Edge는 Nodejs, Python으로만 사용가능하다. AWS 인프라도 정리해볼 겸, Go 사용법도 익힐 겸 Lambda@Edge를 이용해서 이미지 변환을 해보려고 했다. 이미지 변환 라이브러리를 이용해서 Go 코드를 다짜놨는데 웬걸? Go는 Lambda@Edge에 사용할 수 없었다. 함수를 만들기 전에 Lambda@Egde를 미리 만들어볼걸 그랬다. 2. 아키텍처와 리전의 제한이 있다. 리전은 us-east-1, 아키텍처는 x86_64이 고정이다. 리전 고정은 CloudFront와 동일한 리전에 위치하기 위해서 인 것 같고, 아키텍처는 클라우드 호환성 ..

앞서 이야기했지만 Go도 알아야되는 상황이 됐다. 그 이유는 Go로 개발한 Lambda가 있기 때문이다. 아무것도 몰라서 바닥부터 머리를 박아가면서 알게된것들이 많다. Go로 Lambda를 개발할 때 주의할 점이 몇가지 있다. 1. yarn이나 npm 같은 패키지매니저가 없어서 makefile을 이용해 빌드 방식을 관리한다. 2. 올해(2024년)부터는 runtime을 go 1.x보다 Amazon Linux 2를 사용하길 권장한다. 3. binary를 생성하고, Amazon Linux 2에서 사용되는 bootstrap으로 람다에 배포해야한다. 참고자료 : https://docs.aws.amazon.com/ko_kr/lambda/latest/dg/golang-package.html 추가적으로, Go의 함수..

어째서인지 람다 몇개가 Go 언어로 만들어져 있다. Window에서도 사용할 수 있는데, 레퍼런스가 linux가 많기도하고.. 현재 람다에서 쓰는 go 코드가 makefile로 빌드하고 있어서 반강제적으로 linux에서 사용해야 했다. WSL에서 설치하려니 번거로움이 많았는데, 좋은 사이트를 발견해 정리해봤다. 1. Go의 최신 버전 체크 일반 Linux, macOS, Windows는 go에서 제공하는 릴리즈 파일을 사용해 설치하면 된다. https://go.dev/dl/ 2. Go 설치 1월 11일 설치 당시 go 1.21.5 버전이 최신 버전이었다. wget https://dl.google.com/go/go1.21.5.linux-amd64.tar.gz sudo tar -xvf go1.21.5.linu..

AWS S3는 저장하는 건 저렴한데, S3에 직접 엑세스하는건 비싸고 느리다. 그래서 CDN을 이용해 캐싱을 많이하는데, AWS에서는 CloudFront 서비스를 이용해서 CDN을 사용할 수 있다. CloudFront란? Amazon CloudFront는 .html, .css, .js 및 이미지 파일과 같은 정적 및 동적 웹 콘텐츠를 사용자에게 더 빨리 배포하도록 지원하는 웹 서비스입니다. CloudFront는 엣지 로케이션이라고 하는 데이터 센터의 전 세계 네트워크를 통해 콘텐츠를 제공합니다. CloudFront를 통해 서비스하는 콘텐츠를 사용자가 요청하면 지연 시간이 가장 낮은 엣지 로케이션으로 요청이 라우팅되므로 가능한 최고의 성능으로 콘텐츠가 제공됩니다. AWS에서 사용하는 기능이니 고가용성은 기..

티스토리를 시작하기 전, 23년 목표를 세웠었다. 어느정도까지 이뤘는지 정리해보고 후기를 정리해보려고 한다. 23년 목표 몸무게 65kg & 체지방 15% -> 감량이 불가능하면 체지방만 고려 블로그 꾸준히 해서 글 100개 이상 쓰기 & 에드 센스 출금 할 정도로 키워보기 코딩 테스트 문제 일주일에 세 문제 이상 풀기 GO 언어로 백엔드 구현 해보기 MSA / k8s / redis / elk stack 익히기 피부 관리하는법 배우기 클라이밍 배우기 한 달에 책 한권 읽기 해외 여행 가기(일본 default) 솔로 탈출(...) 이직 - 매달 세 곳 이상 지원하기 23년 목표 결산 1. 몸무게 65kg & 체지방 15% 실패 지금 생각해보니 생각보다 사실상 불가능한 목표였다. 23년 목표를 세울 때 당시..

이번 프로젝트를 진행하면서, 스프링 시큐리티를 도입하기로 했다. 현재 서비스는 그래도 제법 덩치가 있어서 바로 도입이 어렵기 때문에, 작은 서비스에 먼저 적용해보자는 취지였다. 결론부터 이야기하면, 현재 서비스 구조는 스프링 시큐리티에 필요한 데이터 구조를 가지고 있지 않았다. 이 과정에서 겪은 일들과 필터체인에 JWT를 엮는 일까지가 이번 포스팅이 될 것 같다. 우선 스프링 시큐리티가 뭔지부터 정리해보자. 스프링 시큐리티란? 스프링 시큐리티 공식 사이트에선 아래와 같이 스프링 시큐리티를 소개하고 있다. Spring Security는 강력하고 사용자 정의가 가능한 인증 및 액세스 제어 프레임워크입니다. 이는 Spring 기반 애플리케이션 보안을 위한 사실상의 표준입니다. Spring Security는 J..

이전 프로젝트는 현재 담당하고 있는 것 보다 규모가 훨씬 커서 테이블의 종류가 많았다. 그래서 다양한 테이블에 insert하는 매서드의 경우 중간에 오류가 발생하는 경우를 대비해 별도의 Exception을 정의하고 데이터 무결성을 위해서 rollback 처리를 반드시 해줬어야 했다. 그런데 현재 프로젝트로 넘어와서 코드를 확인해보니, @Transational 어노테이션만 붙이고, rollback은 따로 처리하지 않고 있었다. 지금 생각해보면 이유라기보다는 개발자의 미숙에 가까운게, 해당 프로젝트는 단 하나의 CustomException이 없었다. Checked Exception이 없기 때문에 굳이 rollbackfor를 정의할 필요가 없다는 생각이었을까? 정말 안전할지 알아보자. Transcational..

문제 상황은 다음과 같다. 단건 저장 위해서 아래와 같은 요청 객체를 만들었다. data class QuizRequestDto( val question: String, val answer: String, val hint: String? val order: Int, val visible: String ) 그리고 정상적으로 동작하는 것을 확인하고, Bulk 수행을 위해서 다음과 같은 요청 객체를 만들었다. data class QuizListRequestDto( val quizList: List ) 테스트 요청을 날려보니 아래와 같은 에러를 뱉는다. 11:36:51.103 [http-nio-8080-exec-4] ERROR o.a.c.c.C.[.[.[.[dispatcherServlet] - Servlet.se..
- Total
- Today
- Yesterday
- OpenFeign
- docker
- 후쿠오카
- lambda
- EKS
- serverless
- 람다
- MySQL
- Kotlin
- 스프링부트
- Log
- JWT
- openAI API
- cache
- elasticsearch
- AOP
- ChatGPT
- 오블완
- AWS
- CloudFront
- Elastic cloud
- java
- Spring
- AWS EC2
- OpenAI
- 티스토리챌린지
- GIT
- terraform
- S3
- springboot
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |