Java APM에 대하여
이 문서의 목적 APM, 특히 Java APM에 대한 개략적인 내용과 주요 용어, 개념 등에 대해 참고할 수 있는 자료를 제공한다. 들어가며... 어플리케이션을 개발하고 운영하는데에 있어서, 모니터링은 선택이 아닌 필수로 자리잡고 있습니다. APM은 이런 니즈를 충족시켜주는 도구 중 하나로서, 실시간으로 어플리케이션의 상태를 모니터링할 뿐만 아니라 집계된 이력 / 통계 데이터를 기반으로 사후 조치를 도와주는 역할도 수행합니다. 이 글에서는 Ja
BackendJavaMonitoring
Spring boot - 설정파일로 AspectJ PointCut 지정하기
AspectJ 라고 하면 Advice, Pointcut, Weaving 등 다양한 개념이 등장하지만 이 글의 주제는 포인트컷을 설정파일로 빼는것이므로 AOP 에 대한 내용은 아래 링크를 참고 부탁드립니다. Aspect Oriented Programming with Spring Spring AOP와 AspectJ 비교하기 Spring 에서 Aop는 Bean 만을 대상으로 하며 aop의 설정 코드도 Bean 으로 작성하게 되어 있습니다. 이는 Sp
ArchitectureBackendSpring
오래된 Legacy 기술을 만났을 때 우리가 대처하는 방법, 무정지 서비스로 ELK 신규 노드 증설하는 삽질 경험
안녕하세요 티몬 서비스 개발 1팀에서 근무하고 있는 이순우입니다. 서비스 개발팀은 티몬에서 제공하는 상품 서비스가 안정적으로 운영될 수 있도록 개선, 신규 개발, 장애 처리 등을 지원하고 있습니다. 최근에는 코로나19로 인하여 비대면(Untact) 소비가 화두로 떠오르고 있습니다. 언택트란? 언택트란 접촉(contact)을 뜻하는 콘택트에 언(un)이 붙어 ‘접촉하지 않는다’는 의미이며 기계로 메뉴를 주문하는 키오스크나 VR(가상현실) 쇼핑,
BackendDevOpsMonitoringPerformanceTools
고객 행동 기반 실시간 딥 뉴럴 추천 시스템 : ForYou
(User behavior based Real-time Deep Neural Recommendation System on E-commerce : ForYou) 안녕하세요. 데이터랩의 김한태 입니다. 딥러닝 기술을 이용한 실시간 개인화 추천 서비스인 “ForYou”.”이런 상품 찾아다니셨조?” 구좌의 개발 내용에 대해 소개하고자 합니다. ForYou 딥러닝 추천 시스템의 동작 방식은 1. 다수의 고객 행동 로그를 수집하고, 2. 고객 행동의 시퀀
AI/MLData AnalysisMobilePythonRecommendation
Java 대용량 엑셀 업로드
웹 서비스를 통해 사용자로부터 데이터를 입력 받는 입장에서, 중복된 유형의 데이터를 대량으로 입력 받기 위해, 엑셀 파일 업로드를 이용하는 경우는 흔하게 사용되고 있는 방법입니다. 티몬 시스템에서도 엑셀 템플릿을 제공해주고, 템플릿에 데이터를 추가하여 업로드 처리하는 기능을 종종 사용하고 있는데요. 대량의 건수가 존재하는 엑셀 파일 업로드에서 몇 가지 문제점이 나와서, 효과적으로 처리할 방법을 찾다가 알게 된 엑셀 업로드 구현 방법이 있어 함께
BackendData EngineeringJavaPerformance
딥러닝을 이용해 상품 이미지에서 색상 속성을 추출하기
들어가며… 최근 IT 기업을 중심으로 딥러닝 기술을 실제 서비스에 잘 활용하는 사례가 늘어가는 추세이고, 이러한 경향은 비단 IT 기술 기업뿐만 아니라 과학기술, 의료, 예술, 이커머스 등 다양한 분야로 확대되고 있습니다. 실제로 티몬에서도 딥러닝 기술을 다양한 곳에 활용하고 있는데요, 이번 포스팅에서는 이러한 활용 사례 중 한 가지를 소개합니다. 티몬에서는 최근 대량의 딜을 자동으로 등록하는 시스템을 도입하였습니다. 이때 수작업으로 일일이 상
AI/MLData EngineeringMLOps
자동실행추적기
안녕하세요. 티몬의 모바일 개발 유닛에 소속된 김병주라고 합니다. 이번 주제는 티몬 앱의 플레이 스토어에 리뷰로 자주 등장하는 자동 실행 이슈에 대한 처리 과정에 대해 이야기 하려 합니다. 티몬 앱의 자동실행? 처음 이 이슈를 접한 건 18년 4월 초 였습니다. 플레이 스토어의 티몬 앱 유저 리뷰를 보는 도중 티몬 앱이 강제로 자동 실행된다는 이슈가 올라오기 시작했습니다. 자동실행 이라니? 처음 보는 이슈 내용이었고, 내용이 정확하지 않아 파악
AndroidMobileMonitoringPerformanceUX/UI
Java 대용량 엑셀 다운로드 기능 구현
개발을 하다 보면 종종 운영에서 엑셀 다운로드 기능에 대한 요구가 있는데, 이번에 Java에서 엑셀 다운로드를 구현하는 방법에 대해 알아보겠습니다. Java에서 엑셀 다운로드 기능을 위해 자주 쓰이는 방식으로 JXLS 라이브러리를 이용한 방식과 POI 라이브러리를 이용한 방식이 있습니다. ( ‘제이엑셀’, ‘포이’ 라고들 읽죠 ㅎㅎ) 1. JXLS 라이브러리를 이용한 엑셀 다운로드 기능 구현 방법 2. 티몬에서 JXLS를 이용했을 때의 장애발생
BackendJavaTools
티몬 라이브 플랫폼 제작기
티몬 라이브 플랫폼 제작기 신사업개발랩 김영은 여러분, 스마트폰으로 동영상 많이 보시나요? 출퇴근길에 오며 가며 보면 많은 사람들이 유튜브로 콘텐츠를 보거나 생중계 스포츠, 좋아하는 TV 프로그램을 봅니다. 티몬 앱을 들어와보시면 이미지 대신 동영상으로 설명을 대신하는 상품들도 많아졌죠. 그렇다면 라이브 동영상을 보며 상품을 사는 건 어떨까요? 이미 TV 홈쇼핑을 통해 구매해봤던 분이시라면 익숙한 경험일 수도 있습니다. 제가 속한 신사업개발랩에
FrontendMobileReactUX/UI
티몬의 단계별 테스트 접근과 협업
안녕하세요. 티몬의 품질/테스트 조직인 QE유닛 소속 정상인이라고 합니다. 오늘은 티몬에서 수행하고 있는 단계별 테스트 접근과 협업에 대해서 소개하려고 합니다. (☞티몬의QE란?) 단계별 테스트(*) 접근이란? 소프트웨어 개발(SDLC, Software Development LifeCycle)이 그런 것처럼 소프트웨어 테스팅 또한 계획과 설계, 수행과 보고라는 단계를 거쳐 수행됩니다. 티몬에서 수행하고 있는 테스트 단계 소개에 앞서 일반적으로
BackendCI/CDTesting
ThreadLocal과 ThreadPool
외부 딜연동 프로젝트를 진행하면서 다음과 같은 니즈가 있었습니다. "모든 요청과 응답에 대해서 기록을 남기자." 모든 요청과 응답은 결국 코드상에서 메서드 호출 파라미터와 리턴 결과로 볼 수 있습니다. 로그 기록이 필요한 메서드에 @Snapshot 어노테이션을 구현하여 달아준다면 로깅이 필요한 메서드 진입 시점에 AOP에 의해 요청값을 얻고, joinPoint 가 실행된 이후 시점에서 응답값을 얻을 수 있으니 이를 로그로 기록할 수 있을 것 같
BackendJavaPerformance
Developer와 Quality Engineer, 어떻게 일해야 할까?
들어가며 저는 QE로서 약 10년 동안 일을 했습니다. QE로 일하면서 개발자에 대한 꿈을 키웠고, 늦은 나이에 전향을 하는 것이 쉬운 선택은 아니었지만 더 늦기 전에 도전하여 현재 티몬에서 서비스 개발자 2년차로 임하고 있습니다. 처음 개발자가 되고 소스코드를 보았을 때, 그제서야 개발자들의 고충이 이해되었습니다. 주문이 일어나는 약 1초 사이에 엄청난 소스들을 체크하며 데이터를 생성하고 있었기 때문입니다. 티몬은 PHP에서 JAVA로 전환되
BackendCareerJavaTestingTools
QE는 무슨 일을 하는 사람일까요?
QA 해주세요. 우리 주변에서 자주 들을 수 있는 업무 요청입니다. 제 생각이지만 한국에 있는 소프트웨어 회사라면 그 어디에서든 사용할 것 같습니다. 그런데 QA 해 달라는 말은 어떤 의미일까요? 이 요청을 받은 QE1)는 무슨 일을 시작하면 되는 걸까요? 오늘 글은 이러한 자문으로 시작합니다. 1) 티몬 CTO조직에서는 QA 담당자를 QE(QA + Engineer)라고 명칭.안타깝게도 아직까지 우리나라에서는 QE와 테스터의 구분이 그리 명확하
DevOpsTesting
실시간 항공권 검색 서비스, 이렇게 만들었어요!
티몬에 실시간 항공권 검색 서비스가 있다는 사실! 아시나요? : ) 티몬에서는 정해진 구간에 대한 항공권을 ‘딜’ 형태로 판매하는 상품도 있고, 내가 원하는 날짜와 여행지를 선택하여 항공권을 검색하는 ‘실시간 항공권 검색’ 서비스도 제공하고 있답니다. ▼ 항공권 검색 서비스에 대한 이용 방법은 여기서 확인해보세요! 항공권 검색 서비스 앞에 [실시간]이라는 단어가 붙는 이유는 무엇일까요? 너무 당연한 이야기이지만 항공 스케줄과 요금에 대한 ‘실시
BackendData EngineeringMobile
[알쓸신팁-부록] Javascript 성능 저하 방지법
Front 개발을 하다가 작은 실수 하나로 화면의 성능이 확 떨어지게 되는 경우들이 있습니다. 이런 상황을 미연에 방지하기 위하여, 간단한 3가지 방법을 알려드립니다.1. 전역변수 및 Element를 지역변수화 하여 캐싱 먼저 지역변수를 활용하는 방법입니다.(무슨 말인지 0.1도 모르겠네요.ㅠ^ㅠ) 역시 개발자는 코드로 이야기를 해야겠죠~ㅎㅎ위의 코드를 보면, asisFunction의 안에서 document라는 javascript 전역 객체에
FrontendJavaScriptPerformance
[알쓸신팁] 서버 개발자가 알아두면 쓸데 있는 신비한 Front팁!
시대가 갈수록 Server 개발자는 API 위주의 개발을 하고, Front는 Front 전문 개발자의 영역으로 굳어지고 있습니다. 티몬 또한 이와 다르지 않게 기존 PHP 소스 이외에 Java API로 전환되는 화면은 점차 Front와 Server의 영역이 확연히 구분되고 있습니다. 하지만, 기존 소스 수정 또는 각종 어드민 등의 개발에서는 여전히 서버 개발자가 Front를 컨트롤 할 경우가 있고, 서버 개발 역량 강화를 위해 병행되는 간단한
BackendFrontendJavaTools
RabbitMQ로 메시지 손실 최소화 하는 법(1)
우리는 메시지를 발생한 후 받아서 처리하는 메시징 시스템의 도입이 필요했다. 물론 저장소를 이용하여 직접 구현하여도 되지만 이미 검증된 다양한 솔루션이 나와있기 때문에 적절히 선택을 하면 되었다. 솔루션을 도입하기 위해 몇가지 고려해야 할 사항은 아래와 같았다. - 다양한 플랫폼과 클라이언트 언어를 지원해야 한다. - 메시지 신뢰성을 높여주는 기능을 지원해야 한다. - UI관리 툴을 제공하여 쉽게 관리가 가능하도록 한다. RabbitMQ는 위의
BackendDevOpsTools
소소한 자바 이야기 - Number와 Locale
국제화(internationalization, i18n), 현지화(localization, l10n)에 대한 어떤 프로그래밍 언어나 플랫폼의 지원정보는 많이 접하게 되는데요. 실제 이를 활용할 일은 조금 드문 것 같습니다. 그래서 예전에 진행했던 인도네시아 유저 대상의 상점 프로젝트를 진행할 때 있었던 에피소드를 소개할까 하는데요. 회원팀, 빌링팀에서 어려운 문제는 다 해결해주시니, 저는 이들 팀과 통신하고 UI를 표시하는 정도의 일만 하면 되
JavaMobileUX/UI