From Berrings, Cork and educated at Christian Brothers College, Ryan played schools rugby for Christian Brothers and represented Munster at Schools, U19, U20 and Academy level. In 2010 and 2011, he also played for the International Club XV.
Munster
Ryan made the transition into the Munster senior squad in 2010–11. He made his Munster senior debut against Cardiff Blues on 23 September 2011. Ryan signed a contract extension with the province in March 2012. He won the 2011–12 British and Irish Cup with Munster A on 27 April 2012. He made his Heineken Cup debut for Munster on 20 January 2013, as a replacement against Racing 92. In January 2016, Munster announced that Ryan had signed a three-year contract extension with the province. On 17 September 2016, Ryan was named Man-of-the-Match against Dragons at Rodney Parade. On 1 April 2017, Ryan scored a try and won the Man-of-the-Match award in Munster's 41–16 2016–17 European Rugby Champions Cup quarter-final victory against Toulouse. On 25 April 2017, it was announced that Ryan had been nominated by his teammates for the 2017 Munster Rugby Senior Player of the Year, alongside Niall Scannell and Tyler Bleyendaal. On 5 May 2017, Ryan was named in the 2016–17 Pro12Dream Team. Ryan earned his 100th cap for Munster on 16 September 2017, when he was used as a replacement in the provinces win against Ospreys in round 3 of the 2017–18 Pro14. He signed a three-year contract extension with Munster in December 2018, a deal that will see him remain with the province until at least June 2022. Ryan won his 150th cap for Munster during their 15–6 defeat against Saracens during round 4 of the 2019–20 Champions Cup on 14 December 2019.
Ryan joined English Premiership side London Irish on a short-term loan on 27 August 2012. He played twice for the club, replacing Leo Halavatau on both occasions against Saracens and Wasps.
Ireland
Ryan was named in the Emerging Ireland squad to take part in the 2013 IRB Tbilisi Cup on 19 May 2013. Ryan was again selected in the Emerging Ireland squad when it was announced on 26 May 2014. He came off the bench against Russia in their first 2014 IRB Nations Cup match on 13 June 2014. He started in their second game against Uruguay on 18 June 2014. Ryan started in the 31–10 win Romania on 22 June 2014, a win that secured the 2014 IRB Nations Cup for Emerging Ireland. Ryan was named in Ireland's squad for the 2016 end-of-year rugby union internationals, his first senior squad call-up. On 12 November 2016, Ryan made his senior Ireland debut when he came on as a replacement in the 52–21 win against Canada. Ryan was named in the Ireland squad for the 2017 Six Nations Championship. He came off the bench for Ireland in all 5 games of the tournament. Ryan was also selected in the squad for the 2017 Summer Tour against the United States and Japan. On 10 June 2017, Ryan made his first start for Ireland, doing so in the one-off test against the United States in the Red Bull Arena, New Jersey, before starting both test victories against Japan. He featured off the bench in Ireland's wins against South Africa and Argentina during the 2017 Autumn Internationals. Ryan made two appearances for Ireland as they won a Grand Slam during the 2018 Six Nations Championship, featuring off the bench against France and Wales. He started in the first test and came off the bench during the third in Ireland's historic series victory against Australia in June 2018. Ryan scored his first try for Ireland in their 57–14 win against the United States during the 2018 Autumn Tests on 24 November 2018. Ryan was selected in the 31-man Ireland squad for the 2019 Rugby World Cup, having featured in the warm-up matches against Italy and Wales.