본문 바로가기

분류 전체보기

Spring Boot - 스케줄러 사용해보기 1. FixedDelay vs FixedRate 들어가며 최근에 있었던 일입니다. 제가 만든 컴포넌트를 코드 리뷰를 통해 팀원들과 공유하는 자리를 가졌었는데, 스케줄링 된 작업에 대해서 이런 질문이 들어왔었습니다. 어라.. 저 작업이 0.5초마다 실행되게 설정되어 있는데요, 만일 작업의 수행속도가 0.5초를 넘기면 어떻게 되나요? 다음 작업이 무시되나요? 아니면 스레드가 하나 더 생겨서 어떻게든 0.5초마다 계속 실행되도록 하나요? 아니면 밀린 만큼 연달아 실행하나요? 이 질문은 중요했습니다. 왜냐하면 해당 작업은 무조건 순차적으로, 동시가 아닌 딱 1번씩만 실행되어야만 하는 작업이었기 때문이죠. 저는 스프링의 스케줄링에 대해 대략적인 조사를 해 보았을 때의 기억에 의존해서, "제가 알기로 기본 설정이 싱글 스레드이기 때문에, 수행 시간이 밀린다고 멀..
디자인 패턴 2. 스트래티지 패턴(Strategy Pattern) 스트래티지 패턴이 뭔가요? 세상 모든 지식을 알고 있는 위대하신 위키 백과님은 스트래티지 패턴(== 전략 패턴)을 아래와 같이 정의하고 있습니다. 전략 패턴 또는 정책 패턴은 실행 중에 알고리즘을 선택할 수 있게 하는 행위 소프트웨어 디자인 패턴이다. 전략 패턴은 특정한 계열의 알고리즘들을 정의하고 각 알고리즘을 캡슐화하며 이 알고리즘들을 해당 계열 안에서 상호 교체가 가능하게 만든다. 저 글귀를 읽고 '아! 그렇구나, 스트래티지 패턴 공부 끝!' 하고 잠자러 들어갈 수 있는 사람은 애초에 이 포스팅을 읽고 있지 않겠죠. 저 설명에서 캐치하고 가야할 포인트는 두 가지입니다. 실행 중에 알고리즘을 선택한다. 이 두 가지가 스트래티지 패턴의 골자입니다. 이제부터 스트래티지 패턴이 무엇이며, 어떻게 쓰일 수 ..
디자인 패턴 1. 소개 디자인 패턴이 뭔가요? Design Pattern이란 말만 들었을 때에는, 뭔가 그림을 그려야 할 것 같지만 사실 디자인은 단순히 그림을 그리는 의미가 아니라 '설계'의 의미를 가지고 있습니다. 즉, 디자인은 설계에 해당합니다. 그렇다면 프로그래밍에서 디자인 패턴은 어떤 의미일까요? '프로그램 설계 유형' 정도로 풀어서 쓸 수 있지 않을까요? 프로그램을 설계한다는 의미는 단순히 코딩을 하는 것 그 이상의 문제를 이야기합니다. 진부하지만 회원가입의 예를 들어보고자 합니다. 회원가입에는 보통 성별을 남/녀로 받습니다. 그렇다면 회원 정보를 담을 클래스를 만들 때, 어떻게 해야할까요? 일단 첫 번째 예를 봅시다. ManMember와 WomanMember를 각각 Class로 만들었습니다. 이름과 나이를 각각 멤..
디자인 패턴 0. 공부 시작 들어가며 작년부터 디자인 패턴의 필요성을 느끼고 있었습니다. 단순한 계기는 취직 준비에 필요하단 생각이었고, 현재는 개인 개발 역량을 향상시키는 데에 도움을 줄 수 있을 것이라 여기고 있습니다. 주위에서 가끔 어떤 사람들이 '디자인 패턴을 굳이 공부할 필요는 없다'고 말하기도 합니다. 경력직에서도 디자인 패턴을 잘 모르는 사람들이 있다면서요. 그러나 동시에 '비록 디자인 패턴을 모르더라도, 막상 그 사람들이 작업하는 것을 보면 디자인 패턴을 체화하고 있더라'는 말까지 덧붙였습니다. 즉, 디자인 패턴을 따로 시간을 내서 공부를 하든, 하지 않든, 결국에는 필요한 만큼은 스스로 습득하게 된다는 내용이었습니다. 이 말을 종합해보았을 때, '꼭 안해도 된다.' '하면 좋다' '하면 안 되는 건 아니다' 정도의 ..
왜 자바 Spring만 뽑나요? 꼭 배워야 하나요? 들어가며 취준생 시절 때부터도 쭉 간직해 온 의문이 있었습니다. 내로라하는 대기업들의 구직 공고를 보면, 항상 따라오는 조건들이 있었죠. Java 언어 사용이 능숙한 분 Spring Framework 개발 경험이 있으신 분 Java를 배우긴 했지만, 백엔드에 사용해본 적은 없었기에 이 부분은 항상 지원에 걸림돌이 되곤 했습니다. 도대체 자바 스프링이 뭐하는 녀석이길래 이 기업 저 기업에서 다 찾을까요? 나름대로 정리한 내용을 글로 옮겨보기로 했습니다. 그리고 '그렇다면 Spring을 배워야만 할까?' 하는 고민에 빠지신 분들께 제 의견을 전달해보고자 합니다. 주의사항 : 필자는 백엔드 개발에 이제 막 뛰어든 초짜입니다. 백엔드의 유구한 역사에 대해서는 당연히 잘 모르며, 제가 추측한 이유들도 잘못된 부분..
라즈베리파이로 집에서 서버 구축하기 5. 유동 IP로 DNS 설정하기 - Cloudflare 들어가며 정말 오랜만의 포스팅입니다. 이번 글은 집에서 서버를 구축할 때, 유동 IP로 어떻게 하면 DNS를 설정할 수 있을지 그 방법에 대해서 작성해봤습니다. 들어가기 전에, 이 글은 이미 공유기에서 포트포워딩 설정이 끝나있으며, 서버 도메인을 하나 가지고 있다는 것을 가정하고 작성되었습니다. 포트포워딩에 대한 개념, 설정 방법은 검색하셔서 참고하시면 될 것 같습니다. 유동 IP의 한계 유동 IP란, 고정 IP의 반대되는 개념이며, 중간에 인터넷 공급자에 의해 언제든지 다른 IP로 바뀔 수 있는 IP를 말합니다. 현재 대세인 IPv4 체계로는 이론적으로 4,294,967,296개의 IP가 존재할 수 있으나, 어디까지나 이론일 뿐이고, 실제로는 이보다 더 적은 IP가 사용되고 있고, 현재 인터넷 이용량에..
2020년을 맞이하며 들어가며 2020년 한라산의 일출은 매우 아름다웠다는 소식을 들었다. 하.. 작년은 코빼기도 안 비치더니.. 2019년이 의미 깊은 해였던 만큼, 올해도 그만한 가치가 있는 한 해가 되었으면 한다. 19년 회고는 지난번에 올렸으니, 20년 맞이 다짐을 작성하고자 한다. 더 좋은 개발자가 되고 싶다. 역량은 탄탄한 기초지식에서 나온다. DB를 배우자. 직장 생활에서 가장 처음 느꼈던 점은 "DB는 내 상상보다도 더 까탈스럽다"는 점이었다. 그냥 학부생 시절에 배운 정규화, 락, 인덱스, 트랜잭션에 대한 기초적인 지식들만 있으면 될 줄 알았는데, 막상 실무에서 발생하는 이슈들은 이런 레벨보다 아득히 아래에 있는 부분에서 발생하는 것들이었다. 문제의 발생 원인을 쫓다보면 아예 MySQL의 특정 버전에서, 특정..
2019년을 돌아보며 들어가며 2019년 마지막 주말이다. 2020년이 오기 전에 간단하게 지난 1년을 돌아보고자 한다. 한라산 등반 자세한 글은 아래를 참고.. 새해의 시작을 알리는 이벤트로서는 정말 적격이었다고 생각한다. 관련 블로그 글 2019년 신정 맞이 한라산 등반기 2019년 신정 맞이 한라산 등반기 들어가며 벌써 2020년 1월 1일이 다가오고 있습니다. 저는 2019년 신정 한라산 등반기를 쓰고 있구요. 예전부터 이 기록은 꼭 남겨야겠다고 생각했는데 미루고 미루다가 결국 그 다음 신정이 다가올 때에나 글을.. seolin.tistory.com 첫 면접, 그리고 탈락 학교 선배가 추천해줘서 볼 수 있었던 면접. 지원했던 기업은 나름 대기업 계열사? (확실하지 않음)였고, 해당 업계에서 1위이기도 했다. "구인이 ..