반응형
[Kotlin+Spring] 자주 사용하는 변환식 확장 함수(Extension Function) Util로 관리하기
Back-end 2024. 11. 5. 22:34

회사에서 프로젝트를 진행하다 보면 자주 사용하게 되는 반복적인 변환을 많이 하게 되는 경우가 있다.그럴 경우 공통 util로 빼서 관리하면 형식이 수정될때 한번에 수정하기도 편하고 코드량 자체도 줄어들 수 있어.. 기록용으로 남겨본다. 공통 모듈 코드현재 회사에서는 날짜랑 금액을 나타낼때 해당 util을 사용했었다object ConvertToStringUtil { // timestamp를 특정 날짜 형식으로 표현 fun Int.toStringDate(): String { val dateTime = LocalDateTime.ofEpochSecond(this.toLong(), 0, ZoneOffset.of("+9")) return dateTime.format(DateTim..

AWS CloudWatch 경보 Slack으로 전송하기
Back-end 2024. 1. 9. 22:33

인스턴스의 상태를 모니터링 할 수 있는 최소한의 수단을 만들기 위해 간단하게 빠르게 해볼 수 있는 것 중에 경보 설정을 통한 slack알림 받기를 해보려고 한다. 서버에 문제가 발생하기 전에 사전 경보를 받아 더 빨리 대처하고 대비할 수 있게 하려는 의도를 가지고 AWS에서 제공하는 모니터링 지표를 활용하여 간단하게 설정해보았다. SNS(Simple Notification Service) 주제 생성 먼저 주제 생성 하기 AWS 콘솔 접속 후 - SNS로 이동 - 주제 생성 Slack으로 전송하려면 Lambda를 사용해야 하기 때문에 표준을 선택하고 이름입력 후 생성한다. 아래 상세 설정은 보고 설정하고자 하는대로 설정하면 된다. CloudWatch 경보 생성 이제 알림을 발생시키고자 모니터링을 할 경보를..

AWS GameDay 참석 후기 (2023-10-30)
기타활동 2024. 1. 4. 20:10

회사에서 AWS 게임데이에 참여할 기회가 생겨.. 아무것도 모르지만 홀로 다녀온 후기 17일 일정이었지만 30일로 연기.. AWS 게임데이란? 가상의 회사 유니콘 렌탈사의 신입 DevOps로 입사한 상황에서 시시각각 변하는 요구사항에 따라 아키텍쳐를 진화하면서 점수를 얻는 방식의 이벤트. 주어진 환경과 과제를 행사 당일 구성된 팀원들과 협업하여 수행. 준비 과정 아는게 하나도 없어서 관련 후기 글과 행사 며칠 전 준 사전가이드 영상을 참고하여 이것저것 보고 갔습니다.. 사전 교육 영상과 실습을 할 수 있는 자료와 계정을 주셨는대, 계정 유효기간이 너무 짧아 실습을 진행해보기는 어려웠습니다.. 다음에는 더 길게 주시면 좋을 것 같다..! 사전 교육 영상의 경우 행사에서 사용할 AWS 서비스와 인프라 구조에..

리팩토링 시점과 절차, 리팩토링이 필요한 이유
기타 공부들 2024. 1. 4. 19:52

오래전 강연이지만 인상깊어 간단하게 정리하는 글.. 마틴 파울러 강연 정리 (강연 링크 : https://www.youtube.com/watch?v=mNPpfB8JSIU) TDD(Test-Driven Development) Refactoring 개발 과정은 아래 2단계로 나뉘어지고, 개발자는 항상 두 단계 중 하나만을 수행하도록 고려해야 한다. (하지만.. 개발을 하다보면 생각보다 두 단계를 나눠서 개발하는 것은 쉽지 않은 것 같다..) 기능구현 단계 실패 테스트에서 시작해서 성공테스트가 될때까지 새로운 로직들이 추가되어 감 코드를 잘 짠다기 보다는 일단 기능이 동작하도록 하는 것이 중요 리팩토링 단계 기능은 동일하나, 새로운 코드로 만들기 중복 코드 제거 및 정리 테스트 코드를 통해 기존 기능이 잘 동..

서킷 브레이커[CirCuit Breaker] 패턴이란?
Back-end 2023. 4. 9. 19:35

Circuit Breaker Pattern의 필요성 서비스 개발을 하다보면 외부 API를 호출해야 하는 경우가 생기게 된다. 이러한 외부 API 호출 시, 호출 실패를 고려하지 않을 수 없는데, 호출 이후 request가 타임아웃 될 때까지 쓰레드풀이나 DB풀을 선점하고 있거나, 메모리를 잡아먹으면서 점차 리소스가 부족해지고, 장애가 전파되어 다른 부분까지 문제가 발생할 수 있다. 또한 장애가 발생한 서버에 계속 요청을 보내는 경우 부하를 받아 장애 복구를 힘들게 만든다. 따라서 장애가 발생한 서비스를 탐지하여 요청을 보내지 않게 차단할 필요가 생기게 되었다. Circuit Breaker Pattern의 동작 이 패턴은 Releasse It이라는 서적에서 처음 소개된 패턴이다. 전기의 회로 차단기에서..

[SpringBoot] 프로젝트 리소스 파일 가져오기
Back-end 2022. 11. 29. 22:45

프로젝트를 진행하다 보면 ~/src/main/resources 폴더에 파일을 저장하고 가져와서 사용할 일이 있다. 이때 프로젝트를 빌드하게 되면 리소스 파일은 CLASS_PATH에 위치하게 된다. 따라서 로컬에서는 아래의 예시 코드로 실행해도 실행이 되지만. 실제로 빌드를 하고 배포를 했을 때는 에러가 발생한다. ... fun getSheetService(): Sheets { return Sheets.Builder( GoogleNetHttpTransport.newTrustedTransport(), GsonFactory.getDefaultInstance(), HttpCredentialsAdapter( ServiceAccountCredentials.fromStream(FileInputStream("src/m..

AWS Lambda@Edge & CloudFornt Image Resizing
기타 공부들 2022. 11. 16. 22:28

AWS Lambda@edge로 실시간 이미지 리사이징 Lambda@Edge는 Amazon CloudFront의 기능 중 하나로서, 서버를 프로비저닝하고, 코드를 AWS Lambda에 업로드하고 요청에 대한 응답으로 함수가 사용자에게 좀 더 가까운 위치(리전)에서 트리거 되도록 구성할 수 있다. 프로비저닝: 사용자의 요구에 맞게 시스템 자원을 할당, 배치, 배포해 두었다가 필요 시 시스템을 즉시 사용할 수 있는 상태로 미리 준비해 두는 것 이러한 Lambda@Edge를 이용해서 쿼리스트링으로 옵션을 받아 실시간으로 이미지 크기(width, height)와 품질(quality), 파일 형식(format)등을 변경할 수 있도록 구성하고자 한다. 구현하고자 하는 기능 width, height 값으로 이미지 크기..

자바 직렬화(Serializable)
Back-end 2022. 10. 4. 22:47

자바 직렬화란? 자바 시스템 내부에서 사용되는 객체 또는 데이터를 외부 시스템에서 사용할 수 있도록 바이트 형태로 변환하는 기술 바이트로 변환된 데이터를 다시 객체로 변환하는 역직렬화를 아울러서 얘기하기도 한다. 스프링에서 자바 직렬화(Serializable) 사용법 기본 모델에 java.io.Serializable 인터페이스를 implements하면 기본적으로 직렬화 할 수 있다. 기본 자료형(int, char, string, long, ....등)이어야 한다. 생성자나 메소드는 직렬화 대상에 속하지 않는다. class Report ( @Id @GeneratedValue(strategy = GenerationType.IDENTITY) val id: Long? = null, @Column(columnDe..

반응형