본문 바로가기
AWS에 호구 잡히지 않는 방법 feat. CDN 비용절감 진행기 다음 글은 어떤 내용을 적어볼까 고민을 해보다가, 이런 이야기를 했는데, 반응이 좋아서 한번 적어보려고 한다. 0.시작하며 내가 담당하고 있는 서버들은 현재 재직중인 회사에서 가장 높은 유저수를 보유한 (1600만..) 서비스들이다. 정확한 트래픽 수치를 알려줄수는 없겠지만 , 월 트래픽이 PB 단위를 넘어가게 된다. 유저수에 기뻐하는것도 잠시, 매달 늘어가는 통신비용 (IDC, AWS CF비용)등에 대한 부담이 점점 커저만 갔다. 그리하여, 어찌보면 비용절감TF가 만들어졌고, 클라이언트 개발자분과 함께 여러가지 전략을 세워 나갔다. 결론적으로 예전부터 잘못 사용하고 있던 비용을 절감하여, 전체 통신 비용의 절반을 줄이면서 팀 안에서 '타노스' 라는 별명을 얻게 되었다. 1. 현재를 정확하게 파악해야 비.. 2021. 2. 12.
03. 당신의 @Transactional의 readOnly 옵션 잘 쓰고 있나요? 시작하며 오늘은 Spring에서 마법의 어노테이션이라고 부르는 @Transactional의 readOnly 옵션에 대하여 이야기해보려고 한다. 엥? @Transactional에는 readOnly라는 옵션이 없는데? 엥? @Transactional에는 readOnly 옵션이 없는데 이게 무슨일이죠? 없는 걸로 이야기를 하려고 하는 건가? 우리는 이번 readOnly 이야기를 하기 전에 @Transactional은 2가지 있다는 것을 이야기하고 넘어가려고 한다. 이 2가지가 궁극적으로 하려고 하는 일은 동일하다. (실제 Spring AOP 상에서는 javax 패키지의 트랜젝션과 Spring 패키지의 트랜젝션도 모두 지원하고 있다.) Spring 패키지를 통해 제공되는 어노테이션이 더 많은 옵션을 제공하게 된.. 2021. 2. 4.
[회고] 2020년 상반기 리모트근무 회고 시작하며 2020년은 코로나 19라는 팬데믹 상황이 계속 반복되며, 전례 없는 재택근무의 시대가 되었다. 필자가 다니고 있는 회사에서도 2월 부터 재택근무를 계속 진행하고 있다. 2020년 상반기 동안 리모트 근무를 하면서 필자가 느낀 이야기를 해보려고 한다. 이 글은 내가 다니는 회사에서 진행한 리모트 근무에 대해 주관적인 나의 생각하는 점을 다시 한번 강조하면서 이야기를 시작하겠다. 재택근무의 시작 회사 바로 앞에 있는 식당에서 '코로나 19' 확진자가 발생하면서, 갑작스러운 재택이 시작되었다. 아무런 준비도 없이 재택을 시작하게 되고 나서 다른 사람들은 환경 준비에 꽤 이슈가 있었다고 한다. 필자의 경우는 서버 개발자 이고, 코덕(?)이다 보니, 평상시에도 사내 VPN을 통해 집에서도 일하고 있었다.. 2020. 8. 30.
[리뷰] 개발자 입장에서의 iPad Pro Magic Keyboard 사용기 오늘 해볼 이야기는 기술적인 내용은 아니다. 개발자 입장에서의 한달간 iPad Pro Magic Keyboard는 얼마나 효용성이 있는지에 대한 이야기를 해보려고 한다. 구매를 결심하게 된 내용을 보고 싶다면 아래의 글을 보도록 하자 코로나19를 뚫고 애플스토어를 다녀왔습니다. 회사에 계신 분께서 아이패드 매직 키보드 관련 이야기를 하다 보니 갑자기 매직 키보드가 쓰고 싶어 졌다. 그래서 이번 달 장비 구입 예산도 있기도 했고 구매를 해보기로 했다. 애플스토어 코� life.yangs.kr 내가 생각한 iPad Magic Keyboard의 사용 용도 많은 사람들은 '노트북 대신' 사용하기 위하여, 'iPad'를 구매하고는 한다. 물론 Apple이 지난 WWDC에서 이야기 했던 Big Sur와 Apple .. 2020. 7. 30.
알쓸신잡(3) - 폐쇄망에서 CloudFront 사용 하기 시작하며 사내에서 CloudFront를 사용 하고 있다. 이전에는 Invadliation을 날리지 않는 CF 였는데, 이번에 내부적인 사정으로 인하여 Invalidation 요청이 필요한 상황이다. 이전 글을 보면 알겠지만, 나는 폐쇄망 환경에서 서비스를 개발하고 있다. 그래서 이 카테고리의 취지에 맞게, 필요한 도메인 리스트들을 남겨두려고 한다. 오픈이 필요한 방화벽 리스트 도메인 포트 cloudfront.amazonaws.com 443 사실 이렇게 기억 하면 된다. 1. 리전을 타는 서비스의 경우 (S3, Dynamodb, SQS 등) 서비스명.리전.amazonaws.com 2. 리전을 타지 않는 Global 서비스의 경우 (Cloudfront) 서비스명.amazonaws.com 서비스명.amazon.. 2020. 7. 27.
02. 알아두면 쓸떼있는 GeneratedValue 이야기 Part1 시작하며 우리는 Entity를 만들 때 우리는 PK (Primary Key)를 지정한다. 그중에서도 Primary Key를 선택할 때, 전략적으로 생각했을 때 순차 증가 값을 포기할 수가 없다. 과연 그럼 JPA에서는 이런 대체 키를 어떻게 생성하고, 어떤식으로 동작하는지에 대해 알아보도록 하자. GeneratedValue란? import javax.persistence.*; import java.io.Serializable; import java.time.LocalDateTime; @Table(name = "coupon") @Entity @Getter @Setter public class Coupon implements Serializable { private static final long seria.. 2020. 6. 4.
01. 그 Enum 사용 방법은 틀렸다. (Attribute Converter에 대해 알아보자) 시작 우리는 개발을 하다 보면 열거형 타입의 데이터를 많이 다루게 된다. 가장 흔한 데이터로는 '남성', '여성'이 있기도 있을 것이고 계절이라는 데이터에서는 '봄', '여름', '가을', '겨울' 이 있을 것이다. 이제 DB로 다시 이야기를 해보자. 우리는 DB에 데이터를 효율적이게 넣고 싶을 것이다. 어느 누가 int로 저장 가능한 정보를 '남성' 이런 식으로 값을 낭비하면서 적고 싶겠는가! 오늘은 JPA에서 제공하는 Enum의 처리법에 대해 알아보고, 그중 'Attribute Converter'에 대해 이야기해보려고 한다. @Enumerated 있는데 그거 아님? "이거 이거 정말 멍청한 놈이군.. 우리에겐 @Enumerated이 존재하다고~" 맞다. 우리에겐 @Enumerated가 존재한다. 하지.. 2020. 5. 23.
알쓸신잡(2) - 폐쇄망에서 FCM 서버와 통신하기 시작하며 지난 글에서 작성한 폐쇄망 관련 글이 생각보다 조회수가 잘 나와서, 하나 더 준비해봤다. 오늘은 Google Firebase에서 제공하는 Firebase Cloud Message API를 폐쇄망에서 사용해야 할때 필요한 도메인 리스트를 공유 하려고 한다. 구조 아마, 거의 모든 개발자가 비슷한 구성으로 서비스를 개발 할 것으로 생각 된다. 앱 서버 (혹은 PUSH 발송 서버) -> 구글 FCM 서버 방화벽 서비스 정책 상, 아웃바운드에 해당 하는 트래픽 오픈이 필요 하다. 필요한 오픈 리스트 서비스에 필요한 아웃바운드 정책은 아래와 같이 구성 된다. 도메인 포트 fcm.googleapis.com 443 재미있는 사건 근데, 먼가 Google이 이 정도 트래픽으로 차단을 하지는 않을 것 같다는 생.. 2020. 5. 11.
알쓸신잡(1) - 폐쇄망에서 Crashlytics Mapping file 업로드하기 폐쇄망 그대로 인하여.. 내가 다니는 회사는 개발망 (폐쇄망)에서 개발을 진행하고 있다. PC에서는 외부망 접근이 아예 불가능하고, 서버 구역에서 개발에 필요한 최소한의 서비스만 오픈 해서 사용 하게 된다. 새로운 것을 도입 할때마다 굉장히 피곤하지만, 그들이 말하는 보안정책을 위해서는 어쩔수 없다. 이 글에서는 폐쇄망에서 Firebase Crashlytics Mapping File을 업로드를 위하여, 해야하는 작업들에 대해 정리 해보려고 한다. TMI 저는 단순 반복을 병적으로 싫어 합니다. 예전부터, 병적으로 반복 작업 하는것을 싫어했기 때문에, 자동화 하는것을 좋아한다. 그러던 어느날. 안드로이드 팀에서 리딩을 하고 계신분께서 정말 싫어 하는 노가다를 하고 있길래.. 자동화 이야기를 했는데, 어떤곳.. 2020. 5. 7.
Spring 이 정도는 해줘야지 - 01. 시작하며 거 제목이 너무 자극적인거 아니요? 제목은 원래 자극적이게 적는거다. 그래야 "이놈보게~" 하는 자극을 주면서 사용자가 유입되게 된다. 사실 최근에 지인을 통해 @city7310 님의 '백엔드가 이정도는 해줘야함'에서 아이디어를 얻어서, 'Spring 이정도는 해줘야지' 으로 제목을 가지게 되었다. 백엔드가 이정도는 해줘야 함 - 1. 컨텐츠의 동기와 개요 필자가 고등학교 1학년 말에 처음으로 백엔드 포지션에서 프로젝트를 진행하며, 멍청했던 과거 이야기와 이 컨텐츠를 기획한 동기를 공유합니다. velog.io 이 연재는 왜 시작하게 되었나요? 최근 주변에서 여러가지 이유로, Spring에 관심을 가지는 선/후배들이 많아졌다. 근데 이들이 물어보는 내용이 거기서 거기고, 매번 똑같은 내용 다시 설명 해주기.. 2020. 5. 7.