본문 바로가기

분류 전체보기70

[프로젝트 진행하기 #4] 회의 진행 프로젝트 진행하기 4탄이다. 이번 포스팅에서는 이제 회의를 어떤식으로 진행하면 좋을까에 대해 다뤄보고자 한다. 회의 부분은 생각보다 글이 짧을 것이다. 🗨️ 회의는 대면? 비대면?본론부터 말하자면 회의는 대면을 강력 추천한다. 물론 비대면으로 회의를 진행하면 장점이 있긴하다. 이동 시간을 줄이고, 직접 얼굴을 마주보면서 하는게 아니다보니깐 피로감도 덜든다. 하지만 내가 느꼈을 때, 비대면 회의는 생각보다 진도가 잘 나가지 않는다. 왜냐하면, 비대면으로 진행하면 팀원들이 딴짓을 할 가능성이 높아져서 의견 소통이 잘 안되고, 의견도 잘 내지 않는다. 또한, 사람이 적으면 괜찮지만, 사람이 6명만 되더라도 굉장히 사운드가 많이 겹쳐서 잘 전달이 되지 않는다. 반대로 대면으로 진행하면 이 사람이 무엇을 하고 .. 2024. 6. 17.
[프로젝트 진행하기 #3] 기획의 고도화 프로젝트 진행과정 3탄이다. 이번 포스팅에서는 2탄에서 한 기획을 바탕으로 고도화를 하는 과정을 간단히 다뤄보고자 한다.  🗨️시작하기전에기획의 고도화가 왜 필요할까? 2탄에서도 말했지만, 명확한 기획이 아주 중요하다. 기획이 부실하면, 서로 이해한 내용이 다르고, 혼란스러워지고, 우리가 지금 하고 있는 프로젝트가 왜 필요한지 의문도 들 것이다. 💡Use Case 그려보기Use case란 시스템이 사용자와 상호작용을 어떻게 하는지 방식을 설명하는 그림이다. 이를 통해, 서비스의 요구사항을 명확히 알 수 있고, 또한 사용자가 우리 서비스를 이용하는 시나리오를 알 수 있다. 위 그림은 제가 "국민대학교를 위한 스트리밍 플랫폼, Kwitch"를 개발할 때 그렸던 Use case Diagram이다. 이런식으.. 2024. 5. 31.
[대규모 시스템 설계] GRPC를 통한 서비스간 통신 서비스간 통신 어떻게 진행할까?일반적으로 우리가 MSA 구조에서, 서비스와 서비스간 통신한다라고 한다면 직관적으로 떠오르는 것은 Endpoint를 생성해서 REST를 이용해서 통신하는 것이다. 하지만, REST의 큰 단점이 존재한다. REST는 HTTP/1.1 프로토콜을 사용하기 때문에, 단일 request에 대해서 단일 response만 제공해준다. 즉, 여러번의 request를 보내서 서버에 처리를 요청해야 된다. 그러면, 불필요한 네트워크 비용이 발생하며, 성능도 저하가 된다. 요즘같이 MSA가 업계 표준이 되가는 상황에서, 서비스간 통신이 진행될 일이 굉장히 많을텐데, 이 점은 굉장히 치명적일 것이다. 그래서 해결하기 위해 등장한 기술이 Socket, RPC와 같은 기술이다. 여기서, 구글이 기존.. 2024. 5. 22.
[대규모 시스템 설계] 캐시 설계 전략 캐싱 설계 전략 왜 필요한가?캐싱은 서비스의 응답시간을 대폭 줄일 수 있는 아주 좋은 기술이다. 우리가 특정 사이트로부터 공지사항을 크롤링 해오고, 이를 목록으로 보여주는 기능을 구상했다고 해보자. 그리고 이 공지사항은 24시간에 한번만 크롤링을 해와 자주 바뀌지 않는 정보라고 가정해보자. 그런데 자주 바뀌지도 않는데 매번 RDB에서 정보를 읽어오면 어떨까? 가뜩이나 리스트 형태여서 많은 정보를 읽어와야하는데, 자주 바뀌지도 않는데도 매요청마다 읽어오면 매우 비효율적이고 성능에 치명적일 것이다. 따라서, 자주 바뀌지 않는 정보는 메모리에 캐싱을 해두면 빠르게 사용자의 요청에 응답할 수 있게 된다. 얼마나 빨리지는지 결론이 궁금한 사람들이 있을 것 같에서, 실제 우리 프로젝트에서 적용한 캐싱 결과를 공개하.. 2024. 5. 20.
[대규모 시스템 설계] MSA의 필요성과 고려할 포인트들 예전부터 내가 제일 관심이 많았던 분야가 MSA, 대규모 트래픽 처리, 고가용성 아키텍처, 동시성 처리이다. 즉, 종합적으로 말하자면 "대규모 시스템 설계"에 대해서 많은 관심을 가지고 있었다. 하지만, 내가 여러개 프로젝트를 진행했음에도 불구하고 제일 많이 사용자를 유치한 것은 30여명의 사용자를 유치했던 "외국민" 프로젝트이다. 아마 프로젝트를 진행해본 사람들은 잘 알 것이다. 실사용자 100여명을 채우는 것은 굉장히 힘든 일이다. 즉, 내가 관심 있는 분야인 MSA, 대규모 트래픽 처리 등등은 경험하기 힘들고 오히려 MSA로 설계하면 오버엔지니어링인 경우가 많다. 그래서 솔직히 실제 우리 프로젝트에 적용하기에는 오버엔지니어링이고, 유지보수 시간과 비용이 너무 많이 들어서 개인적으로 대규모 시스템 설.. 2024. 5. 19.
[프로젝트 진행하기 #2] 서비스 기획 프로젝트 진행과정 2탄이다. 이번 포스팅에서는 1탄에서 선정한 베이스 아이디어를 바탕으로 서비스 기획을 하는 과정을 간단히 다뤄보고자 한다.  🗨️시작하기전에앞서 1탄에서 문서화를 위해 Notion을 사용한다고 언급했다. 문서화를 어디까지 해야될까?에 대해서는 추후 다룰 예정이다. 하지만, 다른건 몰라도 "기획"단계에서의 문서화는 반드시 진행해야한다. 문제 정의, 경쟁 서비스 분석, 회의록, 기능 정의 등 기획과 관련된 모든 것은 반드시 문서화 해야됨을 명심하자. 내 친구가 항상 입에 달고 사는 말이 있다. "기획이 8할이다."라고 그 친구가 항상 말한다. 나는 이 친구 말에 진짜 공감하는게 실제로 "오늘의 출근" 프로젝트와 "Reborn" 프로젝트를 진행하면서, 기획이 중요성을 많이 느꼈다. 기획이 .. 2024. 5. 14.
[Kotlin] 코틀린 입문하기 요즘 대세가 Kotlin이고, 나도 Java만 하다가 좀 관심이 많이 생겨서 Kotlin에 대해서 공부한 내용을 정리해보고자 글을 써본다. Kotlin의 컴파일Kotlin이란 우리가 자주 쓰는 그 유명한 Intellij, CLion, Pycharm, Datagrip 등을 개발한 jetbrains에서 공개한 JVM 기반의 언어이다. Java와 유사하지만, 더 간결한 문법과 다양한 기능 추가되었고, Java와 상호 운용이 100% 지원된다. 그래서 Android개발이나 Spring개발 등에서 많이 쓰인다.  앞서 Java랑 유사하다고 했는데, 여기서 중요한 것이 Kotlin 컴파일러는 JVM에서 실행될 수 있는 바이트코드가 포함된 클래스 파일을 생성하는 것이지, Java 코드를 생성하는 것이 아니다!! 위에.. 2024. 5. 13.