![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bAMuDF/btsAjjb2U9F/LYUZO2qVoVH3R3zEvdZUNK/img.png)
들어가기 앞서 아직 이 기능은 GPT 홈페이지에서는 제공하지 않는다. 아직은 API로만 사용 가능한 것으로 확인된다.(GPT-Turbo를 개발자에게 우선 제공한다고 하긴 했다) 11월 6일부터 GPT-4 Turbo를 사용할 수 있게 되었다. 가장 눈에 띄는건 토큰 수가 12만 8천개 까지 증가했다는 것이다. 11월 6일 샘 알트먼의 발표에 따르면, 토큰 활용 개수를 증가시키고 가격도 인하했다고 한다. 또한, 23년 4월까지 학습시킨 데이터를 기반으로 응답을 주기 때문에 기존 22년 1월까지의 데이터에 비해 비교적 최신 데이터로 갱신 되었다고 한다. 그리고 몇 가지 기능이 추가 되었는데, 그 중 하나가 모델들을 살펴보면, gpt-4-vision-preview가 추가 되었는데 이 모델을 통해 이미지 인..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/biUbJ8/btsz86SMPIK/NIUShzJKQRxEqn6Ac7uUi1/img.png)
이전 글에서는 GitHub Actions에서 컨테이너를 만들고 ECR에 업로드까지 진행해봤다. 하지만 ECR에 업로드할 컨테이너 이미지를 만드는 과정에서 Dockerfile을 필요로하고, 빌드도 포함해야 한다. 이 과정이 불필요하게 프로세스를 잡아 먹기 때문에 아래와 같이 JIB을 이용해 이미지를 바로 생성한다. Jib는 애플리케이션을 컨테이너 이미지로 패키징하는 모든 단계를 처리합니다. Dockerfile을 만들거나 Docker를 설치하기 위한 권장사항을 알 필요가 없습니다. 구글에서 제공하는 JIB 공식 사이트에서 소개한 말인데 딱 적절하게 소개해 준 것 같다. 사용방법은 간단하다. 의존성은 따로 정의할 필요 없이 build.gradle 파일에 필요한 내용들을 작성하고, github acti..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/Ba8H3/btszK8wzhdH/aYJsdrhuaWOxc51FKf7AD0/img.png)
어쩌다보니 ci/cd를 인수인계받게 됐다.(devops를 담당하던 팀장이 이직했다) 때문에 내가 알아야할 것들이 많이 늘어났다.(ci/cd 배포 스크립트, aws 권한 관리, aws 인프라 관리, 모니터링 ㅠ) 일단 ci/cd부터 인수인계 받게됐고, 들었던 내용들을 리뷰해보려고한다. 이번 포스팅에서는 CI만 다룬다. 전반적인 github action을 이용한 CI는 아래와 같이 진행된다.1. github action vm에 linux를 설치2. java를 설치 3. 소스 코드 불러오기 4. (java와 gradle을 캐시)5. 빌드(jar 파일 생성)6. 빌드한 파일로 container image 생성7. (AWS 인증 or dockerhub 로그인)8. 원격 container repository로 전송..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/boIKz4/btszw8wZ6wI/Q9Htx4hNfeMDv6IzkhN7Lk/img.png)
서비스 기획 중 하나가 카카오톡을 기반으로 서비스 예정이라, 이에 관한 마케팅을 진행한다고 한다. 그런데 현재 서비스가 카카오 로그인을 지원하지 않고 있었다. (사용자의 유입을 늘려야하는데!) 바로 구현에 들어가기로 했고, 카카오 Rest API 문서를 보면 Oauth 2.0 기반으로 회원가입/로그인을 지원한다고 한다. 그리고 아래와 같은 스퀀스 다이어그램을 하나 제공하는데... 이게 좀 문제가 있는게 SSR(서버 사이드 랜더링)을 위한 구조도이다. 그래서 CSR에서는 적합하지가 않다. 왜냐면 로그인 요청을 받은 서버에서 해당 사용자의 회원가입 여부를 확인해야하기 때문이다. 그리고 callback 페이지의 redirection도 해야하는데 서버에서는 적절하게 이를 제어할 수 없다. 때문에 FE 서버에서 ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bCkcLJ/btszlISghzz/mFGgWlknkMjblVUHUI4L9K/img.jpg)
이전 글에서 SMS 본인 인증(엄밀히 말하면 휴대폰 인증)을 구현하는 법을 간단히 알아봤다. 하지만 문제는, 반복 요청에 대한 처리를 하지 않았는데 이 외에도 몇 가지 문제가 더 있다. 1. 이미 인증한 사람이 인증 번호 반복 요청 2. 아직 인증하지 않은 사람의 인증 번호 반복 요청 3. 인증한 사람이 다른 번호로 인증 번호 반복 요청 인증 번호를 요청하는 것은 단순하게 생각하면 FE에서 막아줄 수 있다. 문제는 새로고침 했을 때, 이 사람이 인증을 했거나 대기 중인 상태란 걸 내려 줄 수 있어야 한다. (그렇지 않으면 당연히 반복 요청을 할 수 있을 것이다) 방법은 여러가지가 있을 것 같다. user 테이블에서 sms_cert 와 같은 컬럼을 생성하고 , "Y", "N", "P"(pending) 값을..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/DbvxZ/btszlXuiPZZ/HvHXkgGxdySu1vXu5mpmIk/img.webp)
Java와 다른점이 보일때마다 쓰는 Kotlin - 2 자바에서는 매서드 파라미터나 return 값을 범용적으로 사용하고 싶을 때 Object로 타입을 지정한다. (Object는 모든 객체의 최상위 부모 클래스이다.) 코틀린에서는 비슷한 의미로 Any를 쓴다. Any도 코틀린의 최상위 클래스이다. Any를 타고 들어가보면 아래와 같은 설명이 있다. The root of the Kotlin class hierarchy. Every Kotlin class has Any as a superclass. 따라서 Any는 Object와 사실상 큰 차이가 없다. 차이가 있다면 이후에 타입을 판별하는 부분인데, 코틀린에서는 스마트 캐스트라는 기능을 추가적으로 제공한다. 그리고 자바에서 Object를 사용할 때 어떤 객..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/Mzh1z/btszf5Nh33k/fKiNQozoktK8D1e9IFn5G0/img.webp)
Java와 다른점이 보일때마다 쓰는 Kotlin - 1 application.yml에 지정해놓은 환경 변수 값 혹은 environment 값을 가져올 때 Spring-Java에서는 @Value를 쓴다. 예를 들어, Spring-Java에서 프로필 값을 가져올 때는 별도의 설정 없이 아래와 같이 값을 가져올 수 있다. @Value("${spring.config.activate.on-profile}") String profile; 그런데 코틀린에선 위와 같이 Value를 지정해선 동작하지 않는다. 코틀린에서는 조금 다르게 사용해야 한다. @Value("\${spring.config.activate.on-profile}") lateinit var profile: String 일단 자바랑 다르게 이스케이프 문자..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/b73Rsz/btsy35sEVLx/kI8AZ0Cnvsdqkqkq5XRcE0/img.png)
현재 개발 중인 서비스에서 본인 인증 기능이 필요해졌다. 한번쯤 써봤을 PASS 본인인증 같은 기능이다. 내가 인증 대상이 될 때는 몰랐는데, 본인 인증 기능을 개발하려니 업체 선정에서부터 어려운 점이 생겼다. 결국은 요금이 가장 큰 걸림돌되었고,(현재 서비스는 사용량이 썩 많지 않다.) 우선 대표적인 국내 업체 두 곳을 비교했다. 구글링을 하면 가장 먼저 나오는 곳은 PASS와 드림시큐리티였다. 하지만 두 업체는 가장 먼저 후보군에서 제외 됐다. 두 곳 모두, 기본료가 청구된다는 것이다. 서비스 이용자가 많지 않아서 기본료가 청구되는 상황은 배보다 배꼽이 크다 판단했다. 또 SDK에 대한 정보가 하나도 없어서 구현 난이도나 주고 받는 정보가 우리 서비스에 맞을지 가늠이 잘 안됐다. (인증 UI까지 제공..
- Total
- Today
- Yesterday
- serverless
- java
- Spring
- 람다
- elasticsearch
- MySQL
- AWS
- lambda
- docker
- Kotlin
- S3
- 오블완
- Elastic cloud
- ChatGPT
- 티스토리챌린지
- OpenAI
- JWT
- AWS EC2
- EKS
- 스프링부트
- CloudFront
- terraform
- AOP
- OpenFeign
- 후쿠오카
- Log
- springboot
- cache
- GIT
- openAI API
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |