[ SSAFYcial | 4월 미션 기사 ] 우리 반 고수를 찾아라 🔎 - CS 고수 강인혁
안녕하세요
4월 미션 기사로
다시 돌아온
SSAFYcial 12기
심순화 기자입니다! 📝
이번 달 기사는요
CS 지식들과
상당한 개발 실력을 갖춰
주변 교육생들에게 “CS 고수”로 불리는
멋진 교육생에 대한 이야기입니다!!
개발에 대한
이야기를 하다 보면
“와... 이 분 진짜다”
감탄하게 만든
강인혁 교육생입니다! 💡
새로운 기술들을 공부하고
핵심 개념을 다른 사람에게도
쉽게 설명해 주는 친절함까지 갖춘
진짜 찐 CS 고수!
과연 이분은 어떤 방식으로
CS 역량을 쌓아왔는지
궁금하지 않으세요? 🤔
그럼 지금부터
CS 고수, 강인혁 교육생의 이야기
함께 들어보시죠~! 🎧
🎤 안녕하세요! 인터뷰에 응해주셔서 감사합니다! 먼저 자기소개 부탁드립니다.
🪖 안녕하십니까! 회장으로서 구미캠퍼스를 부끄럽지 않게 이끌기 위해 약소하게나마 CS 공부를 해온 강인혁입니다.
공군에서 부서 내 15명의 장교 중 당직사관으로 만나고 싶은 사람 2위를 달성했습니다. 이 경험을 바탕으로, 싸피생들이 만나고 싶은 지역대표 1위가 되기 위해 노력 중입니다!!
🎤 와, 멋진 이력입니다!! SSAFY 교육장 내에서도 인싸로 소문나신 것으로 알고 있습니다 ㅎㅎ 며칠 전에는 카프카 강의하시는 모습도 봤는데요...! 아주 인상 깊었습니다! 그래서 인터뷰 요청을 드렸었는데요 ㅎㅎ 혹시 개발에 대한 지식들은 어떻게 공부하시나요??
🪖 궁금한 내용들은 구글링을 통해 많이 찾아보았습니다. 특히, 공통 PJT 시 유난히 실행이 오래 걸리는 메서드가 있었는데 이때의 답답했던 경험을 해결하려고 많은 구글링을 했습니다. 그 후 Kafka 메시지 큐의 존재를 알게 되었습니다. 또한, 찾다 보니 Toss 기술 블로그에 MSA + Kafka 등을 도입한 포스팅이 있어서 이걸 보고 특화 PJT에서 꼭 적용해보고 싶다는 열망을 가졌습니다!!
혹시 궁금하신 분들을 위해 링크도 공유드립니다. https://toss.tech/article/22563
특히, 단순 기술 설명이 아니라 고민한 과정과 적용 시 기대효과들이 풍부하게 기술되어 있어 2년 차 이상의 백엔드 개발자는 이런 걸 하겠구나, 이런 고민을 통해 시스템이 발전하는구나 등 많은 꿀팁을 학습할 수 있었습니다.
🎤 오오 좋은 정보 감사합니다! CS 공부나 새로운 기술 학습을 중요하게 생각하는 이유가 있나요?
🪖 CS 공부나 새로운 기술 학습 둘 다 매우 중요하다고 생각합니다!
먼저, 신기술 학습에 대해서 말씀드리겠습니다. 알고 있는 것만 쓰는 개발을 넘어서 진짜 네X버, 카X오스러운 개발을 하기 위해선 MSA, Kafka 등의 기술도 알고 있는 것이 필수인 듯합니다. 특히, 기존의 기술로도 싸피 프로젝트 백엔드는 문제없이 구성할 수 있기 때문에 신기술을 따로 공부하지 않으면 지금까지 해오던 단계 너머로 나아가기 어려운 것 같습니다. 그렇기 때문에 본인의 관심 분야에 신기술을 어떻게 도입했는지 사례를 위주로 공부하길 추천드립니다. 예를 들면 토X는 어떻게 금융에 신기술을 적용했는가, 배X은 모놀리식 아키텍처를 MSA로 어떻게 탈바꿈했는가 같은 것들 위주로 말입니다.
CS는 공부를 해두면 단순히 기획한 대로 기능이 잘 돌아가게 개발했다! 를 넘어서 주어진 환경 속에서 이런 걸 고려해서 어느 정도의 성능을 보장하도록 OO을 적용했다와 같이 개발을 깊이 있는 고민과 함께 해낼 수 있게 되어 본인의 성장을 체감할 수 있습니다. 저는 CS 스터디에서 DB 트랜잭션 격리 수준과 동시성 제어를 중점으로 공부한 게 도움이 많이 되었습니다. 그 덕분에 다음과 같은 고민을 통해 깊이 있는 개발을 해낼 수 있었습니다. 아래 예시를 참고 부탁드립니다.
(예시)
결제 시 데이터 정합성 보장을 위해 Dirty read 현상은 절대 발생해선 안 되는 상황이었습니다.
하지만 많은 트래픽을 감당해 낼 수 있어야 하기 때문에 SERIALIZABLE 격리 수준을 적용할 수 없다고 판단했습니다.
그에 따라 REPEATABLE READ 격리 수준을 적용하는 게 최선이라고 판단했고,
DB 트랜잭션 격리 수준으로 해결할 수 없는 결제 동시성 이슈는 JPA의 낙관적 락/비관적 락을 이용해 해결했습니다.
동시성 이슈 해결 중 특이하게도 한 튜플의 업데이트가 빈번한 '판매자 지갑 갱신'의 경우에는
낙관적 락 적용 시 충돌이 자주 발생하고 오히려 비관적 락보다 더 느린 현상을 겪게 되어
비관적 락을 적용하였습니다.
🎤 정말 친절한 설명 감사합니다!! 혹시 최근 가장 흥미롭게 공부하거나 시도해 본 CS 개념이나 기술이 있다면 소개해주세요!
🪖 DB 트랜잭션 격리 수준을 소개해드리고 싶습니다! 마냥 튼튼해 보이던 DB도 사실 부하테스트만 걸어도 데이터 정합성이 박살 나고 난리가 납니다.
READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ, SERIALIZABLE
위 순서로 격리 수준이 올라감에 따라 어떤 이슈를 해결할 수 있는지, 현실적으로 REPEATABLE READ 단계에서 더 높이기 힘든 점 등을 3시간 정도 공부하시면 진짜 앞으로의 백엔드 개발에서 쭉 도움이 되실 겁니다.
🎤 백엔드 개발자를 희망하는 분들께 정말 도움이 될 것 같아요! 그렇다면 처음 CS 공부를 접하는 사람들(ex, 예비 ssafy 14기)에게는 어떤 공부 방법을 추천하시나요?
🪖 CS 공부 시 개념, 원리만 보면 재미도 없고 금방 까먹습니다. 실제 SpringBoot 개발 시 어떻게 적용할 수 있을지, 내가 겪었던 문제와 연관이 있는 걸지 연관 지어서 공부하고 본인의 기술 블로그에 정리한다면 진짜 오래 남을 겁니다!
CS 스터디 시 웬만하면 DB 및 동시성 관련 분야부터 시작하시길 강력 추천드립니다. 실제 저희 개발에 크게 연관된 내용이기 때문에 더 와닿으실 겁니다. 스터디 초기에 웬만하면 OS는 아래 두 가지 제외하고는 깊게 파고들지 않는 걸 추천드립니다!
재미없어서 금방 지치고 포기하실 수도 있습니다... ㅜㅜ
(추천 목록)
- Code, Data, Heap, Stack 메모리 구조
- 뮤텍스와 세마포어
🎤 만약 새로운 기술을 사용하다가 막혀서 막막할 때는 어떻게 극복하시나요?
🪖 새로운 기술을 접하면 항상 Docker 띄우고 환경설정 할 때부터 속이 꽈악 막힙니다. 이때, 그나마 찾아봤던 기술 블로그 내용들이 도움이 많이 되었습니다. "이것만 적용하면 진짜 그동안 못해본 걸 해볼 수 있다, 면접 때 이거 가지고 엄청 어필해 볼 수 있겠다." 하는 마인드로 버텼습니다.
🎤 새로운 것을 배우겠다는 마인드로 버티는 모습 대단합니다!! 앞으로는 어떤 개발자가 되고 싶으신가요?
🪖 유지보수, 배포가 쉬운 개발을 추구하는 백엔드 개발자가 되고 싶습니다. 확실히 스프링부트를 갖고 1학기 때처럼 사용하던 기술만 계속 사용하던 때보다 MSA, Kafka 등의 신기술을 공부하고 이를 적용하고자 열심히 설계할 때 가장 재미있었습니다. 머릿속에 많은 신기술들을 담아두고, 프로젝트에 맞추어 적절히 사용할 수 있는 전문가가 되고 싶습니다. 사용자가 만족스럽게 많은 기능을 지연 없이 이용할 수 있는 토X 같은 앱의 백엔드 개발자가 되는 것이 인생 목표입니다!
🎤 와 멋진 답변들 정말 감사합니다!
인혁님의 이야기를 통해,
저도 열심히 CS 공부를
해야겠다는
생각을 하게 되네요!
CS 고수 인혁님의
개발과 학습 철학이
잘 돋보이는
인터뷰였는데요!
좋은 개발자가
되기 위한
인혁님의
여정을 응원합니다!!
지금까지 4월 미션 기사,
심순화 기자였습니다!
다음 기사에서 또 만나요~ 😄
SSAFY에 대한 더 많은 정보가 궁금하다면?
아래 명함을 눌러 SSAFY 홈페이지에서 많은 정보를 얻어보세요!
▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼
교육생이 직접 전하는 SSAFY 이야기가 궁금하다면?
SSAFYcial 기사 더 보기는 아래 링크를 눌러주세요!
▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼