목록개발 (24)
개발자 되어버리기
------------------서론------------------ 어느덧 개발한지 5년차가 되었다. 클라우드 서버를 접한건 대학교 1학년이었다.이 시기에는 AWS는 워낙 잘 나갔었고 추후에 구글에서는 GCP, 마이크로소프트는 Azure를 내놓았다.덕분에 클라우드 컴퓨팅 시장이 잘 형성되어 있기에 서버 운영에 대한 러닝커브가 적어진 것은 사실인듯하다. 하지만 공짜는 없고.. AWS는 1년동안 프리티어 무료, GCP는 300달러? 정도를 줬었던게 기억난다. 이런 무료플랜들은 사양도 안좋을뿐더러 일정 기간이 지나고 나면 갑자기 청구서에 0$가 아닌 유의미한 금액의 숫자가 찍혀서 온다는 것이다. (대충 학생인데 어떻게 안되냐라는 내용으로 글 써서 보내면 한 번 정도는 청구서 요금을 내지 않게끔 조치를 취해준..
이전에는 let's encrypt가 플러터 통신할때 뭔가 안맞아서 zero ssl로 cname 찾아서 인증받고 그랬었는데.. 이제는 문제가 해결된듯 하여 다시 Let's Encrypt를 사용하기로 마음먹었다. 기존에는 Springboot 자체적으로 https를 적용해왔었는데이게 서비스가 많아지다 보니 그냥 웹서버 하나 두고 얘가 reverse proxy로 퍼다 나르는게 낫겠다 싶었다. 일단 기존 스프링부트에서 쓰던 인증서는 주석 처리 해준다.#server:# ssl:# enabled: true# key-store: ./cert_and_key.p12# key-store-password: helloworld# key-store-type: PKCS12# key-alias: tom..
2019년 부터 펫x너 flutter 컨버팅 작업을 시작으로 앱개발에도 관심이 붙고 앱개발이랑 서버개발을 병행하면서 지낸지 어느덧 5년이 지났다. 2022년 1월 1일에 쓴 글이 마지막 글이었는데 그럼에도 불구하고 블로그를 꾸준히 찾아 주시는 분들이 계시기에 블로그 포스팅도 더 열심히 해야겠다 느꼈다. 2021년부터 하던 서버를 조금 내버려두고 앱개발에 흥미가 붙어서 앱개발쪽으로 본격적으로 전향한 바가 있다. (하지만 외주나 개인 플젝 전부 Springboot 쓰고.. 회사에서도 결국 서버 개발을 담당하게 되었다는...) 특히 22년부터 23년까지는 외주를 엄청나게 많이 했던 것 같다...2023년에만 해도 외주로 벌어들인 수익이 쫌 됐기에 시간을 돈으로 바꾸는 작업을 무진장 했다고 느껴졌다... ..
만약 메소드 단위별로 시간을 측정하고싶다면 (혹은 그 외의 무언가 특수한 공통적인 목적이 있을경우) 해당코드를 응용하면 좋을 것 같다. import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.springframework.stereotype.Component; @Aspect @Component public class TimeTraceAop { @Around("execution(* com.mydirectory..*(..))") public Object execute(ProceedingJoinPoint joinPo..
사내에서 프론트엔드와 클라이언트 단에서 토큰 로그아웃을 진행하였는데 무언가 오류가 나거나 토큰이 불필요하게 남아있게 될 경우를 대비에 토큰이 불필요한 API에 대해 토큰을 사용하지 않도록 필터링 하는 작업을 진행하게 되었습니다. 일단 기본적으로 밑에 글의 트래픽 인터셉트 글을 참고하시면 좋을 듯 합니다. koogood.tistory.com/32 SpringBoot 트래픽 제한하기 한번에 많은 요청이 오거나 혹은 문자인증을 하거나 또는 외부로부터 공격이 왔을 경우 내부의 자원을 보호하기 위해 대비책을 세워두면 좋습니다. 이번 포스팅에서는 Bucket4j를 이용하여 트래 koogood.tistory.com 우선 인터셉트에 필터 관련 코드를 추가합니다. @Component @Log4j2 @RequiredArg..
한번에 많은 요청이 오거나 혹은 문자인증을 하거나 또는 외부로부터 공격이 왔을 경우 내부의 자원을 보호하기 위해 대비책을 세워두면 좋습니다. 이번 포스팅에서는 Bucket4j를 이용하여 트래픽을 제한하는 포스팅을 해보고자 합니다. // 대역폭 제한 implementation 'com.giffing.bucket4j.spring.boot.starter:bucket4j-spring-boot-starter:0.2.0' 위와 같이 build.gradle에 라이브러리를 추가 해줍니다. import io.github.bucket4j.Bandwidth; import io.github.bucket4j.Bucket; import io.github.bucket4j.Bucket4j; import io.github.bucket..
JWT의 장점은 세션을 사용하지 않기에 서버의 자원을 효과적으로 사용할 수 있다는 것에 장점이 있습니다. 장점도 분명 존재하지만 단점도 있고 그 단점중 하나는 로그아웃에 관련된 내용입니다. 우선 도커를 이용해 간단하게 Redis를 설치해보겠습니다. Redis는 키-값 기반의 인메모리 기반 데이터베이스 입니다. 메모리에 직접 저장이 되기에 껐다키면 날라가지만 인메모리 특성상 매우 좋은 성능을 제공합니다. 서버컴은 껏다 킬 일이 없으니..? jwt같은거 사용할 때 많이 사용 합니다. 우선 도커가 설치되어 있지 않다면 우분투에 도커부터 설치를 진행해야 합니다. sudo apt install docker-ce 이후에는 가볍게 사용할 수 있는 Redis를 설치합니다. docker run -i -t --name r..
구글쪽 smtp 쓰는것은 많이 나와있고 생각보다 쉽습니다. 구글이 아닌 네이버 쪽은 어떻게 할지 간단하게 포스팅해보겠습니다. 1. 설정으로 들어갑니다. 2. 위 사진과 같이 설정을 해줍니다. 이후에는 yml에 네이버 계정 관련된 정보를 넣어줍니다. email: host: smtp.naver.com username: myId password: myPassword port: naverport 저희가 쓰는 포트는 465 포트 입니다. 그 다음은 yml 데이터를 읽어올 클래스를 작성 합니다. @Configuration // yml 파일에서 가져올 변수 이름을 명시해준다. @ConfigurationProperties(prefix = "email") @Setter @Getter public class Applica..