전체 글51 첫 사이드 프로젝트 앱 출시 후기(+ 수익, 다운로드 수) 안녕하세요. 후니입니다!! 간만에 블로그 글 남깁니다. 그동안 블로그는 쉬고 있었는데, 그 동안 사이드 프로젝트를 진행했었고 그 경험에 대해서 글로 남겨 기록하고 싶었습니다.제가 만든 앱은 Playground라는 어플이에요! 팀끼리 게임을 하며 점수를 경쟁하고, 가장 높은 점수를 기록한 팀과 팀원들에게 기프티콘을 제공하는 컨셉이었습니다. 앱 성과 출시 이후 안드로이드 기준으로 400회 정도의 다운로드를 기록했는데, 예상보다 많은 분들이 관심을 가져주셔서 초반에는 정말 열심히 운영했답니다. 특히 앱테크를 즐겨 하시는 분들이 적극적으로 참여해주셔서 반응이 꽤 뜨거웠어요. BM은 플레이를 할 때 마다 나오는 상자에 광고를 붙였는데, 생각보다 google Ads 수익이 많지는 않았습니다 ㅋㅋ운영을 하다 보니 기.. 2025. 4. 11. 관습적인 추상화 service와 serviceImpl 목표 일반적으로 Service 인터페이스와 ServiceImpl은 1:1인 경우가 많은데, 굳이 인터페이스와 구현체를 나눠놓은 이유가 뭔지에 대해서 작성해보기! 내용 많은 프로젝트에서 MVC 구조를 많이 채택하며, Service코드를 작성할 때 Service와 ServiceImpl로 작성하는 경우가 많은데 관습적으로 이렇게 하는경우가 많다보니 “대부분 이렇게 하던데?”라는 생각으로 따라하게 되었는데 문득 궁금증이 들게 되었습니다. 사실 Service와 ServiceImpl은 1:1인 경우가 대부분이어서 오히려 작성해야하는 코드만 늘어난다는 생각이 문득 들었습니다. 일반적인 service, serviceImpl 코드 interface ProductService { List getProductList(); .. 2023. 9. 5. outbox patten 구현해보기- (2) Overview outbox patten 구현해보기- (1) 이벤트기반 환경에서 DB상태변경과 함께 이벤트를 발생시켜야하는 경우가 있습니다. 예를들어 쇼핑몰에서 주문, 상품, 알림 서비스로 나누어져 있다고 생각했을 때, 주문이 완료되면 상품 재고 hoony-devblog.tistory.com 지난 포스팅에 이어서 outbox pattern중 Polling publisher pattern을 구현해 보겠습니다. 사실 그림처럼 구현난이도는 어렵지 않습니다. 다음 순서대로 구현 해 보았습니다. 주문이 들어올 때 한 트랜잭션 안에서 order 테이블, outbox 테이블을 insert한다. outbox 테이블을 polling한다. outbox 테이블의 payload를 aws sqs로 전송한다. order 저장 @.. 2023. 7. 17. outbox patten 구현해보기- (1) Overview 이벤트기반 환경에서 DB상태변경과 함께 이벤트를 발생시켜야하는 경우가 있습니다. 예를들어 쇼핑몰에서 주문, 상품, 알림 서비스로 나누어져 있다고 생각했을 때, 주문이 완료되면 상품 재고가 감소되고 판매자에게 알림이 전송되어야 한다는 요구사항이 있다고 가정해 보겠습니다. 주문이 완료되면 ‘주문완료됨’이라는 메시지 발행과 함께 상품 , 알림 서비스는 ‘주문완료됨’ 이라는 이벤트를 구독하여 비즈니스 로직을 처리할 수 있을 것입니다. 모놀리틱 환경이라면 이벤트 구독으로 처리하지 않고, 로직을 트랜잭션으로 묶여 ACID를 보장받을 수 있겠지만, 이벤트기반 환경에서 주문서비스 주문로직이 이 완료된 후 메시지를 발행한다면 생각 할 점이 있습니다. 데이터의 일관성을 위해서는 트랜잭션이 커밋될 때 메시지.. 2023. 7. 16. [Spring] Jcache에 cache eventListener 추가하기 [Spring] Cache적용하여 속도 개선하기. 적용하게 된 계기 회사내에 프로젝트를 하다가 상품등록시에 상품마다 매번 Category, Brand 등의 테이블을 조회 해와서 유효성 검증을 하고 있었다. 이걸 개선해보고 싶어서 캐싱을 적용해 봤고 포 hoony-devblog.tistory.com 지난번 포스팅때 간단하게 JCache를 이용하여 cache를 적용해 보았는데, 요번 포스팅에는 간단하게 캐시 관련해서 eventListener를 추가해서 로그를 한번 찍어보려고 한다. SimpleCacheEntryListener 구현 @Component class SimpleCacheEntryListener : CacheEntryCreatedListener, CacheEntryExpiredListener, Lo.. 2023. 7. 12. [Spring] Cache적용하여 속도 개선하기 적용하게 된 계기 회사내에 프로젝트를 하다가 상품등록시에 상품마다 매번 Category, Brand 등의 테이블을 조회 해와서 유효성 검증을 하고 있었다. 이걸 개선해보고 싶어서 캐싱을 적용해 봤고 포스팅을 해보려고 한다. 캐시할 데이터 업데이트가 자주 일어나지 않고, 자주 조회하는 Category, Brand, Keyword를 캐시해서 사용하려고 한다. 캐시를 하면 매번 DB에서 조회하지 않고, 빠르고, 네트워크를 타지 않기 때문에(Local cache 한정) 효율적으로 가져올 수 있다고 생각했기 때문이다. Local cache VS Global cache 캐시는 크게 Local Cache와 Global Cache로 나눌 수 있는데, 그중 Local Cache를 적용하기로 했다. Local Cache.. 2023. 7. 10. 이전 1 2 3 4 ··· 9 다음