분류 전체보기

    카카오톡 서버 다운, 그 이유가 뭘까?

    카카오톡 서버가 2021년 10월 2일 토요일 00시를 기점으로 약 6분간 다운 되었습니다. 배포나 배치 같은 작업을 하다 발생한 원인이 아닐까 싶기도 한데.. 이런걸 볼수록 우리 서비스에 대한 Customer Trust 의 중요성을 느끼게 됩니다. 카카오에서 직접 RCA 해주면 좋겠지만 그럴리 없겠죠. ㅎㅎ

    DI(Dependency Injection)는 왜 필요한가?

    Context DI에 대한 이야기를 하기 전, 의존성 그 자체에 대한 이야기를 먼저 해보자. 의존성은 무엇이고, 언제 발생하는가? 바리스타가 커피를 만들기 위해선 커피 머신의 협력이 필요하다. 즉 바리스타의 '커피 만들기' 라는 행위는 커피 머신에 의존적이다. 어떠한 애플리케이션은 작업을 처리하기 앞서 설정 값을 참조한다. 이 때 애플리케이션은 설정 값에 의존적이다. 두 번째 예시를 코드로 옮겨보면 다음과 같다. Calculator는 CalculatorConfig의 값에 따라 동작 여부를 결정한다. data class CalculatorConfig( val name: String, val status: Boolean = true ) class Calculator { fun isAvailable(): Bo..

    정부에 재능 기부한 썰~ Feat. 코로나19 개인 안심번호

    핵클(https://hackle.io)에서 Software Enginner로 재직 중인 Aaron 입니다. 2020년 초에 유행하기 시작한 요놈의 바이러스는 아직도 기승을 부리고 있죠. 그러다 보니 코로나19 전파 초기 감염병 예방 및 감염 전파의 차단을 위해 전자출입명부(QR)와 수기출입명부가 도입되어 사용되고 있는데요. 여러분도 식당이나 카페 같은 다중이용 시설에서 사용해보신 적 있으시죠? 이번 게시글에서는 코드포코리아에서 활동하며 있었던 수기출입명부와 관련된 이야기를 풀어보고자 합니다. 수기출입명부 초기 수기출입명부는 이름과 휴대전화번호, 주소를 적게 되어 있었습니다. 그러나 사생활 침해가 심하다는 이유로 지난해 9월 이름을 제외하고 휴대전화 번호와 주소지 시·군·구까지만 기재하도록 방역수칙이 변경..

    스택과 힙 메모리, 그리고 멀티 스레드

    JVM Memory는 스택과 힙 영역으로 구분된다. 이들은 어떻게 다르고 멀티 스레드에서는 어떻게 동작하는걸까? Context 코틀린 프로그래밍에서 클래스의 인스턴스를 생성할 때 비용이 발생한다. 인스턴스를 생성하고 더 이상 사용하지 않을 경우 가비지 콜렉션 과정을 통해 메모리에서 해제하는 과정 또한 비용이 발생한다.따라서 인스턴스를 매번 생성할 필요가 없는 경우 매번 인스턴스를 생성하지 않는 것이 성능 측면에서 더 유리하다. 이 때문에 개발자는 요청마다 매번 인스턴스를 생성해야 하는지, 생성하지 않고 이미 생성된 인스턴스를 재사용할 것인지를 판단해야 한다. 이에 대한 기준은 인스턴스가 상태 값을 유지해야 하는지에 따라 구분된다. 송금 관리 시스템 예를 들어 은행 송금 시스템의 경우엔 송금을 관리하는 하..

    localhost는 IPv6와 IPv4 어떤걸로 동작할까?

    Java를 이용해 웹 서버를 구현하던 중 신기한 현상(?)을 발견해 그 내용과 해결 방법을 공유해보려 한다. Context Java에서 서버소켓을 생성하기 위해선 ServerSocket 클래스가 사용된다. int port = 8080; try (ServerSocket listenSocket = new ServerSocket(port)) { log.info("Web Application Server started {} port.", port); // 클라이언트가 연결될때까지 대기한다. Socket connection; while ((connection = listenSocket.accept()) != null) { // Do something .. } } 그리고 해당 서버에 액세스하는 방법은 크게 3가지 ..