분류 전체보기 93

AWS Lambda Image Architecture - arm64, x86_64의 차이

1. 아키텍처의 기본적인 차이:- x86_64: Intel/AMD의 전통적인 컴퓨터 프로세서 아키텍처- ARM64: 모바일 기기에서 시작해서 서버까지 확장된, 전력 효율적인 RISC 기반 아키텍처2. AWS Lambda의 환경:- AWS는 비용 효율성과 성능을 위해 Graviton2/3 프로세서(ARM64 기반)를 많이 사용- Lambda 실행 환경이 ARM64인데 x86_64로 빌드된 이미지를 실행하려고 하면 CPU 명령어 세트가 달라서 실행 불가3. 실패 원인:```RequestId: 9f3fce15-e2b9-47ab-b906-47c9aa5eceb6 Error: fork/exec /lambda-entrypoint.sh: exec format error```이 에러는 바이너리가 현재 CPU 아키텍처에서..

꺼내먹어요 2025.02.20

운영이슈 경험 : 일 하는 티를 내야된다

일 하는 티를 내야된다업무를 수행하면서 발생하는 장애나 예기치 못한 문제에 대한 신속한 대응과 코드 배포, 리소스 프로비저닝 등 하는 것은 모든 직무에서 중요한 사항이다. 이런 실시간성 대응이 요구되는 환경에서는 상황 공유와 명확한 소통이 업무의 핵심이라고 할 수 있다. 이에 대해서 상황 공유의 중요성, 즉 일 하는 티를 내야하는 이유에 대해 얘기하고자 한다. 나의 이야기 신입시절, 나는 주목받는 것을 부담스러워했었다. 장애가 발생했을때 QA 담당자와 개별 DM으로만 소통했다. 하지만 이것이 큰 화를 일으켰었다. 다른 관계자들이 상황을 전혀 알지 못해 답답해했고, 나를 멘션까지 달면서 '언제 해결되요?'라며 재촉했던 적이 있었다. 모두가 나를 주목한 그제서야 단체 채팅방에 상황을 공유해야 했다. 그 상황..

02. Route 53, 고객님의 도메인 관리는 우리가 알잘딱 하겠습니다.

경로 기반 라우팅과 서브도메인 관리: 문제와 해결 방안무슨 문제가 있길래?우리 서비스는 경로 기반 라우팅을 사용하고 있지만, 레거시 서비스가 여전히 운영 중이라 서브도메인을 완전히 배제할 수 없는 상황이다. 현재 제공 중인 서비스는 총 5개, SSO, 어드민 페이지 2개, SSL 인증, SES 인증 레코드 4개(DKIM 등)를 포함하면 10개 이상이 되는데 W/L을 사용하려는 고객은 이 레코드들을 모두 등록해야 한다. DNS 이름값서비스appapp.service.com어드민adminadmin.service.comSSOssosso.service.com그 외...  이 많은 정보를 고객에게 요청하면, 항상 이런 질문이 나온다. 뭐가 이렇게 등록하는게 많아요? 아무리 구조를 설명해도 고객의 부정적인 반응을 피..

운영이슈 경험 : 커리어의 도움, 일정 관리

오랜 시간 한 서비스를 담당하며 수백 건의 운영 이슈를 처리했었다. 그 과정에서 얻은 경험과 느낀 점들을 정리해보고자 한다.운영이슈, 그기 커리어에 도움됩니까?많은 개발자들이 운영 이슈 처리가 커리어에 별로 도움이 되지 않는다고 이야기한다. 이에 반은 동의하고, 반은 동의하지 않는다.운영 이슈는 단순히 데이터 추출이나 오류 처리만을 의미하지 않는다. 종종 서비스의 정책을 재검토하거나, 개선을 위한 추가 개발을 요구하기도 한다. 예를 들어, 사용자의 자유도를 높이기 위해 설계했던 기능이 오히려 사용자를 혼란스럽게 만들거나, 서비스 이용을 제한하는 요인이 되는 경우도 있었다. 이러한 문제를 해결하고 서비스를 개선하는 과정도 운영 업무의 일환이며, 이는 개발 경험으로 볼 수 있다.물론, 이력서에 '운영 이슈 ..

01. 지금 운영하는 White label의 구조는 어떠한가?

White label이란? White Label(이하 W/L)이란 타사의 제품 또는 서비스를 구매하여 자사 브랜드로 리브랜딩해 판매하는 비즈니스 모델을 뜻한다. 이는 공급업체가 기술, 콘텐츠, 서비스 등을 제공하고, 구매한 기업이 이를 자신의 브랜드로 최종 소비자에게 제공할 수 있도록 허용하는 방식이다. 일반적으로 고객들은 SaaS 솔루션을 계약하고 사용하지만, Resell, MSP, 또는 사내 조직별 클라우드 관리를 위해 W/L 계약을 맺는 경우도 있다. 대표적인 사례로 Atlassian을 들 수 있다. Atlassian은 도메인을 등록하고 인증한 뒤, Jira, Confluence 등의 서비스를 선택하도록 구성 페이지를 제공한다. 이 과정 이후 고객 도메인 기반으로 서비스를 사용할 수 있다. 여기서 ..

17버전 이상을 고려해야될 상황

우리는 아직도 8버전을 쓰고 있다.20년도 21년도 Jetbrain이 조사한 JDK 사용 점유율 통계 (하위 링크 참조)에 따르면,Java8 버전을 사용하는 사례가 아직까지 사용율이 높다.참고링크https://www.jetbrains.com/ko-kr/lp/devecosystem-2020/java/#Java_which-versions-of-java-do-you-regularly-usehttps://www.jetbrains.com/ko-kr/lp/devecosystem-2021/java/#Java_which-versions-of-java-do-you-regularly-use왜 아직 8버전을 쓰고 있을까?가장 오랜 LTS 기간안정성과 신뢰성검증된 버전으로, 이전에 있던 버그들이 대부분 해결되었으며, 다양한 ..

Java/History 2024.12.16

Java 갑작스런 버전 변화, 왜?

첫버전 부터 8버전 까지, 현 시점에 비해 느리게 업데이트한 이유장기 지원(LTS) 버전 미발표:8 버전이전에는 자바가 장기 지원(LTS) 버전을 발표하지 않았기 때문에개발자들이 자바 버전 업데이트를 받을 때마다 호환성 문제와 다양한 변화에 대응해야 했다.이로 인해 업데이트에 대한 시간과 노력이 많이 요구되었다. 사실은 이전에도 비슷한 개념은 있었으나 Oracle과 다른 Java 제공업체들이자체적으로 JDK(Java Development Kit) 버전에 대한 지원 주기를 결정했다. 또한 Oracle은 6버전과 7버전의 상업적인 지원을 제공했으며, 각 버전에 대한 지원 주기는 제품 버전과 라이선스 유형에 따라 다르게 설정되었다. 하지만 8버전 이후로 Oracle이 LTS를 제공하기로 결정하였고 그 이후 1..

Java/History 2024.12.16

Java 17 대표 코드

Sealed 클래스 도입명시된 클래스만 상속시킬수 있다.어떤 클래스가 해당클래스를 상속받는지 쉽게 알수 있고 제한할수 있다.Sealed 된 클래스를 활용하기 위해서는 같은 모듈 혹은 같은 패키지 안에 있어야한다.// 최상위 클래스에 sealed라 선언.public sealed class Character permits Hero, Monster {}// permits로 선언된 Class만이 Character를 상속 받을 수 있다.public sealed class Hero extends Character {}public sealed class Npc extends Character // 상속 불가능// non-sealed 로 선언된 Monster 는 어떤 class 든지 상속 할 수 있다.public no..

Java/History 2024.12.16

Java 15, 16 대표 코드

성능 개선을 위한 레코드(Records) 클래스 최적화public record Person(String name, int age) { public Person { if (age 가비지 컬렉션 개선Shenandoah 가비지 컬렉터Java 15에서는 Shenandoah 가비지 컬렉터가 기본적으로 지원되기 시작했다.Shenandoah는 대규모 메모리와 대규모 힙을 가진 애플리케이션의 성능을 향상시키는 것을 목표로 하는 가비지 컬렉터다.이 가비지 컬렉터는 일부 애플리케이션에서 힙 메모리 크기가 큰 경우에 더 나은 성능을 제공할 수 있다.G1 가비지 컬렉터 개선Java 15에서는 G1(Garbage-First) 가비지 컬렉터도 여러 가지 개선을 받았다.이로써 G1 가비지 컬렉터가 더 효율적으로 ..

Java/History 2024.12.16

Java 12~14 대표 코드

instanceof 패턴 매칭(Instanceof Pattern Matching) 도입// 12 버전Object obj = "Hello, World";if (obj instanceof String) { String str = (String) obj; // 명시적으로 형변환 System.out.println(str.toUpperCase());}// 14 이후Object obj = "Hello, World";if (obj instanceof String str) { System.out.println(str.toUpperCase()); // 형변환 생략해도 가능}개선된 스위치 표현식(Switch Expressions)String dayName = switch (day) { case..

Java/History 2024.12.16